Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bir çalışma alanı oluşturduktan sonra, bir işlem hattına Windows PowerShell komutları ve betikleri ekleyebilir ve ardından işlem hattını zaman uyumlu veya zaman uyumsuz olarak çağırabilirsiniz.
İşlem hattı oluşturma
System.Management.Automation.PowerShell sınıfı işlem hattına komut, parametre ve betik eklemek için çeşitli yöntemler sağlar. System.Management.Automation.PowerShell.Invoke* yönteminin aşırı yüklemesini çağırarak veya System.Management.Automation.PowerShell.BeginInvoke* ve ardından System.Management.Automation.PowerShell.EndInvoke* yönteminin bir aşırı yüklemesini çağırarak zaman uyumsuz olarak işlem hattını çağırabilirsiniz.
AddCommand
System.Management.Automation.PowerShell nesnesi oluşturun.
PowerShell ps = PowerShell.Create();Yürütmek istediğiniz komutu ekleyin.
ps.AddCommand("Get-Process");komutunu çağırın.
ps.Invoke();
System.Management.Automation.PowerShell.Invoke* yöntemini çağırmadan önce System.Management.Automation.PowerShell.AddCommand* yöntemini birden çok kez çağırırsanız, ilk komutun sonucu ikinciye aktarılır ve bu şekilde devam edilir. Önceki bir komutun sonucunu bir komuta yöneltmek istemiyorsanız, bunun yerine System.Management.Automation.PowerShell.AddStatement* çağırarak bunu ekleyin.
AddParameter
Önceki örnekte parametresiz tek bir komut yürütülür.
System.Management.Automation.PSCommand.AddParameter* yöntemini kullanarak komutuna parametre ekleyebilirsiniz Örneğin, aşağıdaki kod makinede çalışan powershell adlı tüm işlemlerin listesini alır.
PowerShell.Create().AddCommand("Get-Process")
.AddParameter("Name", "powershell")
.Invoke();
System.Management.Automation.PSCommand.AddParameter* tekrar tekrar çağırarak ek parametreler ekleyebilirsiniz.
PowerShell.Create().AddCommand("Get-Command")
.AddParameter("Name", "Get-VM")
.AddParameter("Module", "Hyper-V")
.Invoke();
System.Management.Automation.PowerShell.AddParameters* yöntemini çağırarak parametre adları ve değerleri içeren bir sözlük de ekleyebilirsiniz.
IDictionary parameters = new Dictionary<String, String>();
parameters.Add("Name", "Get-VM");
parameters.Add("Module", "Hyper-V");
PowerShell.Create().AddCommand("Get-Command")
.AddParameters(parameters)
.Invoke()
AddStatement
İşlem hattının sonuna ek bir deyim ekleyen System.Management.Automation.PowerShell.AddStatement* yöntemini kullanarak toplu işlemlerin simülasyonunu yapabilirsiniz. Aşağıdaki kod, powershelladlı çalışan işlemlerin listesini alır ve ardından çalışan hizmetlerin listesini alır.
PowerShell ps = PowerShell.Create();
ps.AddCommand("Get-Process").AddParameter("Name", "powershell");
ps.AddStatement().AddCommand("Get-Service");
ps.Invoke();
AddScript
System.Management.Automation.PowerShell.AddScript* yöntemini çağırarak var olan bir betiği çalıştırabilirsiniz. Aşağıdaki örnek işlem hattına bir betik ekler ve çalıştırır. Bu örnekte, D:\PSScriptsadlı bir klasörde zaten MyScript.ps1 adlı bir betik olduğu varsayılır.
PowerShell ps = PowerShell.Create();
ps.AddScript(File.ReadAllText(@"D:\PSScripts\MyScript.ps1")).Invoke();
System.Management.Automation.PowerShell.AddScript* yönteminin useLocalScopeadlı boole parametresini alan bir sürümü de vardır. Bu parametre trueolarak ayarlanırsa, betik yerel kapsamda çalıştırılır. Aşağıdaki kod betiği yerel kapsamda çalıştırır.
PowerShell ps = PowerShell.Create();
ps.AddScript(File.ReadAllText(@"D:\PSScripts\MyScript.ps1"), true).Invoke();
İşlem hattını zaman uyumlu olarak çağırma
İşlem hattına öğe ekledikten sonra çağırırsınız. İşlem hattını zaman uyumlu bir şekilde çağırmak için, System.Management.Automation.PowerShell.Invoke* yönteminin aşırı yüklemesini çağırırsınız. Aşağıdaki örnekte, bir işlem hattının zaman uyumlu bir şekilde nasıl çağrılacakları gösterilmektedir.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Management.Automation;
namespace HostPS1e
{
class HostPS1e
{
static void Main(string[] args)
{
// Using the PowerShell.Create and AddCommand
// methods, create a command pipeline.
PowerShell ps = PowerShell.Create().AddCommand ("Sort-Object");
// Using the PowerShell.Invoke method, run the command
// pipeline using the supplied input.
foreach (PSObject result in ps.Invoke(new int[] { 3, 1, 6, 2, 5, 4 }))
{
Console.WriteLine("{0}", result);
} // End foreach.
} // End Main.
} // End HostPS1e.
}
İşlem hattını zaman uyumsuz olarak çağırma
IAsyncResult nesnesi oluşturmak için System.Management.Automation.PowerShell.BeginInvoke* aşırı yüklemesini çağırarak ve ardından System.Management.Automation.PowerShell.EndInvoke* yöntemini çağırarak zaman uyumsuz olarak bir işlem hattı çağırırsınız.
Aşağıdaki örnekte bir işlem hattının zaman uyumsuz olarak nasıl çağrılacakları gösterilmektedir.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Management.Automation;
namespace HostPS3
{
class HostPS3
{
static void Main(string[] args)
{
// Use the PowerShell.Create and PowerShell.AddCommand
// methods to create a command pipeline that includes
// Get-Process cmdlet. Do not include spaces immediately
// before or after the cmdlet name as that will cause
// the command to fail.
PowerShell ps = PowerShell.Create().AddCommand("Get-Process");
// Create an IAsyncResult object and call the
// BeginInvoke method to start running the
// command pipeline asynchronously.
IAsyncResult asyncpl = ps.BeginInvoke();
// Using the PowerShell.Invoke method, run the command
// pipeline using the default runspace.
foreach (PSObject result in ps.EndInvoke(asyncpl))
{
Console.WriteLine("{0,-20}{1}",
result.Members["ProcessName"].Value,
result.Members["Id"].Value);
} // End foreach.
System.Console.WriteLine("Hit any key to exit.");
System.Console.ReadKey();
} // End Main.
} // End HostPS3.
}
Ayrıca Bkz.
InitialSessionState Oluşturma
Kısıtlanmış çalışma alanı oluşturma
PowerShell