C# 'de bir cmdlet oluşturmaya çalışıyorum.PowerShell - Bir Çalışma Alanında Alma Modülü Nasıl Yapılır
[Cmdlet(VerbsCommon.Get, "HeapSummary")]
public class Get_HeapSummary : Cmdlet
{
protected override void ProcessRecord()
{
RunspaceConfiguration config = RunspaceConfiguration.Create();
Runspace myRs = RunspaceFactory.CreateRunspace(config);
myRs.Open();
RunspaceInvoke scriptInvoker = new RunspaceInvoke(myRs);
scriptInvoker.Invoke("Set-ExecutionPolicy Unrestricted");
Pipeline pipeline = myRs.CreatePipeline();
pipeline.Commands.Add(@"Import-Module G:\PowerShell\PowerDbg.psm1");
//...
pipeline.Invoke();
Collection<PSObject> psObjects = pipeline.Invoke();
foreach (var psObject in psObjects)
{
WriteObject(psObject);
}
}
}
Ama PowerShell içinde bu cmdlet yürütmeye çalışırken bana bu hata veriyor: vadeli ithalat-Modülü bir cmdlet'inin adı olarak tanınmayan kod şöyle görünür. PowerShell'deki aynı komut bana bu hatayı vermiyor. Bunun yerine 'Get-Command' çalıştırırsam 'Invoke-Module' modülünün bir CmdLet olarak listelendiğini görebiliyorum.
Bir Runspace'da 'Import-Module' yapmanın bir yolu var mı?
Teşekkürler!
Teşekkürler! Ancak, Add() yöntemi void değerini döndürür. Bir Komut nesnesi kullanmanız ve buna bir parametre eklemeniz ve bunu Add (Yöntem) yöntemine iletmeniz gerektiğini tahmin ediyorum. Programlı olarak yapmanın iki yolu hakkında konuşuyorsunuz, ikinci yol nedir? – Absolom
oops, ikinci yolla cevap güncellendi. – x0n
Ayrıca, modülünüzü içe aktarmaya çalışırken "AuthorizationManager denetimi başarısız" istisnası alırsanız, .psm1 dosyanızın ASCII'de değil UTF8'de kayıtlı olduğundan emin olun. – Absolom