2011-12-01 80 views
0

我想從C#類傳遞參數給Powershell腳本。我正在使用Process.Start運行腳本。從C#傳遞和訪問Powershell參數#

string powerShellLocation = @"C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe"; 
ProcessStartInfo psi = new ProcessStartInfo(powerShellLocation); 
psi.Arguments = String.Format("{0} {1}", scriptPath, "some_parameter"); 

上述不起作用。有人可以告訴我如何做到這一點?

+1

什麼,準確地說,「不工作」你的現有代碼? –

回答

1

您需要設置參數名稱。像這樣的東西應該工作:

string parameters = string.Format("-FILE {0} -parameter1 \"{1}\"", psFilePath, parameter1Value); 
Process powershell = new Process() 
{ 
    StartInfo = new ProcessStartInfo("powershell.exe", parameters) 
     { 
      UseShellExecute = false, 
      RedirectStandardOutput = true, 
      RedirectStandardError = true 
     } 
}; 
0

你會有什麼工作。你還沒有提到你的意思above does not work和你的腳本是什麼。

我試圖用PowerShell腳本的C#代碼:

param([string]$a) 

write-host "test" 
write-host $a 

,它給了輸出:

test 
some_parameter 

預期。沒有必要指定-File-paramter1類似於其他答案的提及,但取決於腳本的功能。

0

您是否將執行策略設置爲不受限制或允許您執行腳本。默認情況下,Powershell將腳本設置爲不受限制,以防止惡意腳本運行。

運行此命令時,PowerShell是運行管理員:

Get-ExecutionPolicy