簡體   English   中英

使用C#將參數傳遞給Powershell

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM