2017-01-19 30 views
0

運行PowerShell腳本我有一個PowerShell腳本,它的作品,因爲我已經在服務器上手動執行它。但我無法從我們的一臺服務器上的C#代碼中工作。它可以在其他兩臺計算機上使用代碼工作,但不能在需要執行它的服務器上使用。無法在我們的服務器之一,從C#代碼

執行腳本代碼:

var process = new Process();   
process = Process.Start("C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\Powershell.exe", "C:\\CC\\Script\\script.ps1"); 

我曾嘗試與其他的變化,但我們正在運行的PowerShell v1.0和它不支持的解決方案: https://blogs.msdn.microsoft.com/kebab/2014/04/28/executing-powershell-scripts-from-c/

由於代碼的工作兩臺電腦,但不在我們需要使用它的服務器上,我檢查了執行策略,並且它們都是「RemoteSigned」。

任何想法可能是什麼嗎?它會對另一組代碼產生什麼影響嗎?對於PowerShell v1.0,您是否可以使用代碼替代我的代碼?任何其他政策可能會有所作爲?

日Thnx提前

+1

你得到一個錯誤信息? – stuartd

+0

我沒有確切的錯誤消息atm。但是我在C#代碼中輸出了標準錯誤,並且只是說過程從未開始。所有腳本本身都會創建一個包含進程信息的文件夾,但不會創建文件夾。所以,腳本根本不會被執行。儘管如此,我仍然沒有在我的catch塊中得到任何異常,退出代碼只是給了我一個「1」。 –

+0

腳本運行的帳戶是否在該服務器上具有適當的權限?任何適用於服務器事件日誌的東西? – stuartd

回答

1

使用此命令在PowerShell中管理員權限:

Set-ExecutionPolicy Bypass -Force 

,並採取有關腳本路徑小心把它傳遞正確的C#。

+0

這是我永遠不會在服務器上做的事情。尤其不是繞過。 – Joey

+0

這是我們的客戶服務器之一,他們永遠不會接受這樣的改變。當我們在本地嘗試時,執行策略是相同的,並且它的工作原理,所以這不應該是必要的? –

+0

而不是做它在全球範圍內的,只是做它在參數'命令傳遞的單次執行「-ExecutionPolicy繞過C:\\ \\ CC腳本\\ script.ps1」',它會繞過政策僅適用於此單一會話。 –

相關問題