[英]How to pass parameters to a powershell script using c# winforms?
[英]Pass parameters to Powershell using C#
我有一個C#函數實際上異步調用一個powershell下面是我的代碼:
using (PowerShell PowerShellInstance = PowerShell.Create())
{
PowerShellInstance.AddScript(scriptFile,false);
PowerShellInstance.AddParameter("var", "Value");
PSDataCollection <PSObject> outputCollection = new PSDataCollection<PSObject>();
IAsyncResult result = PowerShellInstance.BeginInvoke<PSObject, PSObject>(null, outputCollection);
while (result.IsCompleted == false)
{
foreach (PSObject outputItem in outputCollection)
{
System.Console.WriteLine(outputItem.BaseObject.ToString());
}
System.Console.WriteLine("Waiting for pipeline to finish...");
Thread.Sleep(1000);
}
}
雖然這就像我需要的那樣,但參數的添加似乎沒有做任何事情。 我在powershell中強制要求該參數,但沒有成功。 如果它不是強制性的,它只是起作用而不處理參數。
我的Powershell是:
Param(
[Parameter(Mandatory=$False,Position=1)]
[string]$var
)
. "C:\Data\initiate.PS1"
write-output "Value is $var"
輸出是:
在啟動中 - 這來自PS啟動腳本
價值是
等待管道完成......
如果我在Powershell中將參數Required設為true,則輸出為:
等待管道完成......
我試過在PowerShellInstance.AddScript中改變他的范圍,沒用。 這可能看起來像一個重復的問題,但我找不到解決方案因此在這里問。 我用來創建此代碼的msdn鏈接位於: https : //blogs.msdn.microsoft.com/kebab/2014/04/28/executing-powershell-scripts-from-c/
任何幫助都非常感謝。
請添加/標記PetSerAl的評論作為答案,為我工作。 謝謝
AddScript -> AddCommand
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.