2

我需要从 C# 启动一个 powershell 脚本并在 pipeline.Invoke() 上获取 PSSSecurityException

AuthorizationManager 检查失败。

我的代码:

RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create();
using (Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration))
{
    runspace.Open();
    Pipeline pipeline = runspace.CreatePipeline();
    Command scriptCommand = new Command(scriptfile);
    pipeline.Commands.Add(scriptCommand);
    pipeline.Invoke();
}

问题

  1. 我怀疑我需要设置 PSCredential。但是我不能提示它,所以我必须在代码中处理它。这可以以安全的方式完成吗?(事实并非如此
4

2 回答 2

2

查看此超级用户帖子:https ://superuser.com/questions/106360/how-to-enable-execution-of-powershell-scripts

您可能只需要允许未签名的脚本运行。在 PS 控制台中,键入以下内容:

set-executionpolicy remotesigned

另一个资源与此相呼应:http: //tgnp.me/2011/09/powershell-authorizationmanager-check-failed-resolution/

试试看,让我知道会发生什么。

要捕获脚本的输出,请尝试以下操作:

Collection output = pipeline.Invoke();
foreach (PSObject psObject in output)
{
    <here you can ToString the psObject for the output and write it line by line to your log>
}
于 2014-02-18T14:58:59.510 回答
1

问题是脚本被放置在一个共享上。要在此共享上运行脚本,我需要将该共享添加到受信任的站点。

在此处输入图像描述

在此处输入图像描述

于 2014-02-18T17:02:20.903 回答