Add-PSSnapin' Microsoft.SharePoint.PowerShell'在ISE中运行,但不是从.Net Process.Start命令运行

时间:2016-08-06 05:41:18

标签: c# powershell sharepoint

我遇到了一个自动化问题,我已经跟踪了以下情况:

正在通过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脚本。

有什么想法?

1 个答案:

答案 0 :(得分:0)

PetSerAl的请求是当场的...当通过.Net程序运行PowerShell脚本时,它在x86下运行,但是当它通过ISE运行时,它在x64中运行。我针对x64重新编译了.Net程序,现在一切正常。

感谢您的建议!