2016-08-06 12 views
0

我有,我已經找到了以下情況的自動化問題:附加PSSnapin「Microsoft.SharePoint.PowerShell」在ISE而不是從.net的Process.Start命令運行

的PS腳本是通過process.start在C#程序中加載。如果我在ISE中運行腳本,它運行良好。當通過的Process.Start運行,它失敗的命令:

Add-PSSnapin 'Microsoft.SharePoint.PowerShell' 

與錯誤:

Add-PSSnapin : No snap-ins have been registered for Windows PowerShell version 4. 

我使用.NET中的Process.Start的命令是:

var Arguments @"-version 4.0 -ExecutionPolicy Bypass -noexit -file """ + filePath + @""" -XmlString """ + args + @""" -Verb RunAs" 
var FileName = "powershell.exe" 

var process = Process.Start(FileName, Arguments); 

filePath是正在執行的powershell腳本的路徑。

這會運行並嘗試運行該腳本,但在腳本內部上面顯示的命令上失敗。用戶帳戶是機器的管理員服務帳戶。問題似乎在於.Net程序如何啓動PowerShell,因爲我可以通過ISE和控制檯運行此腳本和這些命令(如果手動執行的話)(在同一個服務帳戶下)。我想,我似乎無法找到一些技巧組合來讓.Net程序能夠在正確的配置文件下執行PowerShell腳本。

有什麼想法?

+0

將此添加到您的腳本並比較結果:'[Environment] :: Is64BitProcess'。 – PetSerAl

+0

有趣......在ISE中是真實的,當我手動運行控制檯時,當通過.Net程序執行時爲False。 – Rocky

+0

得到它的工作,只需編譯用於x64的.Net程序。感謝您的指導! – Rocky

回答

0

PetSerAl的要求是專注於...當通過.Net程序運行PowerShell腳本時,它運行在x86下,但是通過ISE運行時,它運行在x64上。我重新編譯了針對x64的.Net程序,現在一切正常。

感謝您的建議!

相關問題