मैं सी # में एक cmdlet बनाने की कोशिश कर रहा हूं।पावरशेल - रनस्पेस में आयात-मॉड्यूल कैसे करें
[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);
}
}
}
लेकिन PowerShell में इस cmdlet निष्पादित करने के लिए कोशिश कर रहा है मुझे इस त्रुटि देता है: अवधि आयात-मॉड्यूल एक cmdlet के नाम के रूप में मान्यता प्राप्त नहीं है कोड इस तरह दिखता है। PowerShell में एक ही आदेश मुझे यह त्रुटि नहीं देता है। अगर मैं 'गेट-कमान' पर अमल के बजाय, मैं देख सकता है कि 'आह्वान-मॉड्यूल' एक cmdlet के रूप में सूचीबद्ध किया गया है।
वहाँ एक Runspace में एक 'आयात-मॉड्यूल' करने के लिए एक तरीका है?
धन्यवाद!
धन्यवाद! लेकिन विधि जोड़ें() शून्य लौटाता है। मुझे लगता है कि आपको कमांड ऑब्जेक्ट का उपयोग करने और इसमें पैरामीटर जोड़ने की आवश्यकता है और उसे विधि जोड़ें में भेज दें। आप इसे प्रोग्रामेटिक तरीके से करने के दो तरीकों के बारे में बात कर रहे हैं, दूसरा तरीका क्या है? – Absolom
ओह, दूसरे तरीके से अद्यतन उत्तर। – x0n
मुझे यह भी पता चला कि यदि आपको अपना मॉड्यूल आयात करने का प्रयास करते समय "प्राधिकरण प्रबंधक जांच विफल" अपवाद मिलता है, तो सुनिश्चित करें कि आपकी .psm1 फ़ाइल UTF8 में सहेजी गई है और ASCII में नहीं है। – Absolom