我有,我已經找到了以下情況的自動化問題:附加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腳本。
有什麼想法?
將此添加到您的腳本並比較結果:'[Environment] :: Is64BitProcess'。 – PetSerAl
有趣......在ISE中是真實的,當我手動運行控制檯時,當通過.Net程序執行時爲False。 – Rocky
得到它的工作,只需編譯用於x64的.Net程序。感謝您的指導! – Rocky