当前位置:  开发笔记 > 编程语言 > 正文

流程中的集合执行策略

如何解决《流程中的集合执行策略》经验,为你挑选了1个好方法。

我正在使用C#中的Outlook执行VSTO加载项,调用PowerShell脚本与Office 365的Exchange Online进行交互。

通过计算机级别的不受限制的PowerShell执行策略,这一切都可以在我的Windows 10计算机上完美运行。但是,我无法在客户端的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();
} 

有人可以指出正确的方向吗?我知道这是行不通的,就好像我将计算机策略设置为“限制”一样,其他真正令人兴奋的事情也不会发生,但是如果我将其设置为“非限制”,那么一切都会正常进行。



1> SO used to b..:

我刚刚创建了一个新的Console项目,并将其添加到Main中:

using (PowerShell PowerShellInstance = PowerShell.Create())
{
    string script = "Set-ExecutionPolicy -Scope Process -ExecutionPolicy Unrestricted; Get-ExecutionPolicy"; // the second command to know the ExecutionPolicy level
    PowerShellInstance.AddScript(script);
    var someResult = PowerShellInstance.Invoke();
    someResult.ToList().ForEach(c => Console.WriteLine(c.ToString()));
    Console.ReadLine();
}   

即使没有以管理员身份运行代码,这对我来说也非常有效。我正在Windows 10和Powershell 5中使用Visual Studio 2015。

根据Powershell 4.0 Set-ExecutionPolicy和Powershell 5.0 Set-ExecutionPolicy,Set-ExecutionPolicy在Powershell 4和5中的工作方式相同。


所以我测试了上面的代码。它实际上确实工作正常。这是我需要感谢的推动。我更改为绕过,我认为问题出在,我需要分两个步骤进行操作。第一步切换到我的旁路,第二次调用调用能够成功完成,但是如果我尝试在一个脚本中全部调用它,则所有其他项都会失败。感谢您的宝贵时间,并帮助先生们。
推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有