Windows PowerShell Konağı Hızlı Başlangıç
Uygulamanıza Windows PowerShell için System.Management.Automation.PowerShell sınıfını kullanın. Bu sınıf, komut işlem hattı oluşturma ve ardından bu komutları bir çalışma alanı içinde yürütme yöntemleri sağlar. Bir konak uygulaması oluşturmanın en basit yolu varsayılan çalışma alanı kullanmaktır. Varsayılan çalışma alanı, tüm temel Windows PowerShell içerir. Uygulamanıza komut komutlarının yalnızca bir alt kümesini Windows PowerShell özel bir çalışma alanı oluşturmanız gerekir.
Varsayılan çalışma alanı kullanma
Başlamak için varsayılan çalışma alanı kullanacağız ve işlem hattına komut, parametre, deyim ve betik eklemek için System.Management.Automation.PowerShell sınıfının yöntemlerini kullanacağız.
AddCommand
System.Management.Automation.PowerShell'i kullanırsiniz. AddCommand işlem hattına komut ekleme yöntemi. Örneğin, makinede çalışan işlemlerin listesini almak istediğinizi varsayalım. Bu komutu çalıştırmanın yolu aşağıdaki gibidir.
System.Management.Automation.PowerShell nesnesi oluşturun.
PowerShell ps = PowerShell.Create();
Yürütmek istediğiniz komutu ekleyin.
ps.AddCommand("Get-Process");
komutunu çağırma.
ps.Invoke();
AddCommand System.Management.Automation.PowerShell.Invoke yöntemini çağırmadan önce yöntemini birden çok kez çağırırsanız, ilk komutun sonucu ikinciye yönelttir ve bu şekilde devam ediyor. Önceki komutun sonucundan bir komuta kanal eklemek istemiyorsanız, AddStatement System.Management.Automation.PowerShell'i çağırarak ekleyin. gösterebilirsiniz.
AddParameter
Önceki örnek herhangi bir parametre olmadan tek bir komut yürütür. System.Management.Automation.PSCommand kullanarak komuta parametre ebilirsiniz. AddParameter
Yöntem. Örneğin, aşağıdaki kod makinede çalışan adlı tüm işlemlerin PowerShell
listesini alır.
PowerShell.Create().AddCommand("Get-Process")
.AddParameter("Name", "PowerShell")
.Invoke();
yöntemini tekrar tekrar çağırarak ek AddParameter parametreler ebilirsiniz.
PowerShell.Create().AddCommand("Get-ChildItem")
.AddParameter("Path", @"c:\Windows")
.AddParameter("Filter", "*.exe")
.Invoke();
System.Management.Automation.PowerShell'i çağırarak parametre adları ve değerlerinden bir sözlük de ekleyebilirsiniz. AddParameter s yöntemi.
IDictionary parameters = new Dictionary<String, String>();
parameters.Add("Path", @"c:\Windows");
parameters.Add("Filter", "*.exe");
PowerShell.Create().AddCommand("Get-Process")
.AddParameters(parameters)
.Invoke()
AddStatement
System.Management.Automation.PowerShell kullanarak toplu işlemenin benzetimini gerçekleştirebilirsiniz. AddStatement
metodu, işlem hattının sonuna ek bir deyim ekler. Aşağıdaki kod, adıyla çalışan işlemlerin listesini alır ve PowerShell
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'i çağırarak mevcut bir AddScript betiği çalıştırabilirsiniz.
Yöntem. Aşağıdaki örnek işlem hattına bir betik ekler ve çalıştırır. Bu örnek, adlı klasörde adlı bir MyScript.ps1
betik olduğunu D:\PSScripts
varsayıyor.
PowerShell ps = PowerShell.Create();
ps.AddScript("D:\PSScripts\MyScript.ps1").Invoke();
yönteminin adlı AddScript boole parametresini alan bir sürümü de useLocalScope
vardır. Bu parametre olarak true
ayarlanırsa betik yerel kapsamda çalıştır. Aşağıdaki kod betiği yerel kapsamda çalıştıracak.
PowerShell ps = PowerShell.Create();
ps.AddScript(@"D:\PSScripts\MyScript.ps1", true).Invoke();
Özel çalışma alanı oluşturma
Önceki örneklerde kullanılan varsayılan çalışma alanı tüm temel Windows PowerShell yüklerken, tüm komutların yalnızca belirtilen bir alt kümesini yüken özel bir çalışma alanı oluşturabilirsiniz. Performansı artırmak (çok sayıda komutun yüklenmesi performansa isabet etmektir) veya kullanıcının işlem gerçekleştirme özelliğini kısıtlamak için bunu yapmak istiyor olabilir. Yalnızca sınırlı sayıda komutun açığa çıkar olduğu bir çalışma alanı kısıtlanmış çalışma alanı olarak çağrılır. Kısıtlanmış bir çalışma alanı oluşturmak için System.Management.Automation.Runspaces.Runspace ve System.Management.Automation.Runspaces.InitialSessionState sınıflarını kullanın.
InitialSessionState nesnesi oluşturma
Özel bir çalışma alanı oluşturmak için önce bir System.Management.Automation.Runspaces.InitialSessionState nesnesi oluşturmanız gerekir. Aşağıdaki örnekte, varsayılan InitialSessionState nesnesini oluşturdukktan sonra bir çalışma alanı oluşturmak için System.Management.Automation.Runspaces.RunspaceFactory kullanılır.
InitialSessionState iss = InitialSessionState.CreateDefault();
Runspace rs = RunspaceFactory.CreateRunspace(iss);
rs.Open();
PowerShell ps = PowerShell.Create();
ps.Runspace = rs;
ps.AddCommand("Get-Command");
ps.Invoke();
Çalışma alanı sınırlama
Önceki örnekte, tüm yerleşik çekirdek yüklerini yüken varsayılan bir System.Management.Automation.Runspaces.InitialSessionState nesnesi Windows PowerShell. Yalnızca Microsoft.PowerShell.Core ek bileşeninde komutları yükebilecek bir InitialSessionState nesnesi oluşturmak için System.Management.Automation.Runspaces.InitialSessionState.CreateDefault2 yöntemini de çağırabilirsiniz. Daha kısıtlı bir çalışma alanı oluşturmak için, System.Management.Automation.Runspaces.InitialSessionState.Create yöntemini çağırarak boş bir InitialSessionState nesnesi oluşturmanız ve ardından InitialSessionState'e komut eklemeniz gerekir.
Yalnızca belirttiğiniz komutları yüken bir çalışma alanı kullanmak önemli ölçüde iyi performans sağlar.
İlk oturum durumu için cmdlet'leri tanımlamak üzere System.Management.Automation.Runspaces.SessionStateCmdletEntry sınıfının yöntemlerini kullanın. Aşağıdaki örnek boş bir ilk oturum durumu oluşturur, ardından ilk oturum durumuna Get-Command
ve Import-Module
komutlarını tanımlar ve ekler. Ardından bu ilk oturum durumuyla kısıtlanmış bir çalışma alanı oluşturun ve bu çalışma alanı içinde komutları yürütüriz.
İlk oturum durumunu oluşturun.
InitialSessionState iss = InitialSessionState.Create();
İlk oturum durumuna komutlar tanımlayın ve ekleyin.
SessionStateCmdletEntry getCommand = new SessionStateCmdletEntry(
"Get-Command", typeof(Microsoft.PowerShell.Commands.GetCommandCommand), "");
SessionStateCmdletEntry importModule = new SessionStateCmdletEntry(
"Import-Module", typeof(Microsoft.PowerShell.Commands.ImportModuleCommand), "");
iss.Commands.Add(getCommand);
iss.Commands.Add(importModule);
Runspace'i oluşturun ve açın.
Runspace rs = RunspaceFactory.CreateRunspace(iss);
rs.Open();
Bir komut yürütün ve sonucu gösterin.
PowerShell ps = PowerShell.Create();
ps.Runspace = rs;
ps.AddCommand("Get-Command");
Collection<CommandInfo> result = ps.Invoke<CommandInfo>();
foreach (var entry in result)
{
Console.WriteLine(entry.Name);
}
Çalıştır olduğunda, bu kodun çıktısı aşağıdaki gibi olacaktır.
Get-Command
Import-Module
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin