【发布时间】:2016-12-12 13:26:57
【问题描述】:
我有一个自动化问题,我已追踪到以下情况:
PS 脚本正在通过 C# 程序中的 process.start 加载。如果我在 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. -
有趣...在 ISE 和我手动运行控制台时为 True,但通过 .Net 程序执行时为 False。
-
搞定了,只需要为 x64 编译 .Net 程序。感谢您的指导!
标签: c# powershell sharepoint