【问题标题】:Add-PSSnapin 'Microsoft.SharePoint.PowerShell' runs in ISE but not from .Net Process.Start commandAdd-PSSnapin 'Microsoft.SharePoint.PowerShell' 在 ISE 中运行,但不是来自 .Net Process.Start 命令
【发布时间】: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


【解决方案1】:

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

感谢您的建议!

【讨论】:

    猜你喜欢
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    • 2022-01-27
    • 1970-01-01
    • 2019-10-01
    • 1970-01-01
    • 2017-11-10
    • 2016-04-23
    相关资源
    最近更新 更多