【发布时间】:2019-12-18 02:07:20
【问题描述】:
我正在用 C# 为 Outlook 做一个 VSTO 插件,它调用 PowerShell 脚本与 Office 365 的 Exchange Online 交互。
这一切都在我的 Windows 10 机器上完美运行,具有机器级不受限制的 PowerShell 执行策略。但是,我无法让它在客户端的 Windows 7 机器上运行。
我认为有两个问题。一个可能是他的 Windows 7 PowerShell 需要更新才能使用我的代码,其次是我没有正确设置流程执行策略。这是我将执行策略设置为不受限制的最大努力(绕过会更好吗?)。
using (PowerShell PowerShellInstance = PowerShell.Create())
{
StringBuilder OSScript = new StringBuilder("Set-ExecutionPolicy -Scope Process -ExecutionPolicy Unrestricted;");
OSScript.Append(@"other really exciting stuff");
PowerShellInstance.AddScript(OSScript.ToString());
PowerShellInstance.Invoke();
}
有人能给我指出正确的方向吗?我知道这不起作用,好像我将机器策略设置为限制其他真正令人兴奋的事情不会发生,但如果我将其设置为不受限制,那么一切正常。
【问题讨论】:
-
你是以管理员身份运行的吗?
-
是的,这是作为 Office 365 管理员运行的。该代码在我的 Windows 10 PowerShell 5 不受限制的机器上运行良好。我还将 Windows 7 机器升级到 PowerShell 5,它也可以不受限制地运行代码。似乎由于某种原因我的“Set-ExecutionPolicy -Scope Process -ExecutionPolicy Unrestricted;”命令在设置为受限的机器上不起作用。我希望该命令甚至可以在设置为受限的机器上运行该进程。 44
-
我查看了我的代码块,发现与发布它时的情况有所不同。调用已从最后一行中删除。这个标准是删除调用吗?我只是想了解编辑。除了调用之外,似乎大多数编辑只是对明显较差的英语技能的清理。
-
删除 Invoke 调用可能是一个错误,被错误地批准了。
标签: c# powershell vsto