我遇到了一个自动化问题,我已经跟踪了以下情况:
正在通过process.start在C#程序中加载PS脚本。如果我在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 :(得分:0)
PetSerAl的请求是当场的...当通过.Net程序运行PowerShell脚本时,它在x86下运行,但是当它通过ISE运行时,它在x64中运行。我针对x64重新编译了.Net程序,现在一切正常。
感谢您的建议!