Powershell 脚本在一个 .NET 解决方案中工作,而不是另一个

本文关键字:工作 另一个 解决方案 NET 脚本 一个 Powershell | 更新日期: 2024-11-07 15:12:34

我正在使用一个C#库,我发现它运行一些用于Outlook Live的远程Powershell脚本。作为它工作的概念验证,我做了一个单元测试,我可以运行(并逐步调试),它只是调用此库中的public static方法,该方法在后台打开远程 Powershell 会话并运行脚本。

这在我们的一个解决方案中

效果很好,但是当我在另一个解决方案中运行它时它不起作用,即使两个解决方案中都有相同的两个项目和测试类。一个解决方案给了我一个例外

加载格式化数据文件时出错: Microsoft.PowerShell, C:'Users'xxxx.xxxx'AppData'Local'Temp'tmp_8c84e626-4399-420b-b874-9feeb3b1e195_tjlxhzzr.rlr'tmp_8c84e626-4399-420b-b874-9feeb3b1e195_tjlxhzzr.rlr.format.ps1xml :由于以下验证异常,文件已跳过:无法加载文件C:'Users'xxxx.xxxx'AppData'Local'Temp'tmp_8c84e626-4399-420b-b874-9feeb3b1e195_tjlxhzzr.rlr'tmp_8c84e626-4399-420b-b874-9feeb3b1e195_tjlxhzzr.rlr.format.ps1xml,因为在此系统上禁用了脚本的执行。请参阅"获取帮助about_signing"以获取更多详细信息。

我所做的一次尝试是修改 C# 库中的PSCommand以设置Unrestricted但这并没有解决问题。但是,如果我打开 x86 Powershell 并运行set-executionpolicy Unrestricted我的测试将在两个解决方案中运行。更改 x64 版本的 Powershell 中的执行策略对任一解决方案都没有影响。

是否存在特定于解决方案的权限设置类型?Web.Config 或 Global.asax 都无关紧要,因为我没有加载任何页面,所以我不知道还有什么会生效,因为我使用相同的测试运行器(Testdriven.Net)在两个解决方案中运行相同的单元测试。

有什么想法吗?谢谢。

Powershell 脚本在一个 .NET 解决方案中工作,而不是另一个

以管理员身份运行通常设置 hklm,否则在 hkcu 中设置在 64 位操作系统上,您需要分别为 32 位和 64 位 PSH 运行 Set-ExecutionPolicy

HKEY_LOCAL_MACHINE''SOFTWARE''Microsoft''PowerShell''

1''ShellIds''Microsoft.PowerShell

要检查cd "hklm:''Software''Microsoft''Powershell''1''ShellIds''Microsoft Powershell"迪尔