【问题标题】:Capturing the output of a very simple power shell script捕获一个非常简单的 powershell 脚本的输出
【发布时间】:2020-02-03 02:09:12
【问题描述】:

我想执行并捕获一个非常简单的 powershell 脚本的输出。 它是一个“Hello World”脚本,看起来像这样。我用this发帖供参考

filename:C:\scripts\test.ps1

Write-Host "Hello, World"

现在我想使用 C# 执行该脚本,所以我正在这样做

Runspace runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
PowerShell ps = PowerShell.Create();
ps.Runspace = runspace;
ps.Commands.AddScript(filename);
Collection<PSObject> results = ps.Invoke();

现在,当我运行此代码时,我没有得到任何结果。有关如何解决此问题的任何建议?

【问题讨论】:

标签: c# powershell


【解决方案1】:

我没有得到任何结果

您没有得到任何结果的主要原因是您正在使用 Write-Host 向主机写信,这是错误

 Write-Host "Hello, World"

你需要Write-Output

 Write-Output "Hello, World"

您也可以这样做(如果它是管道中的最后一项):

 "Hello, World"

另一方面,您的代码可以简化为:

 PowerShell ps = PowerShell.Create();
 ps.Commands.AddScript("scriptPath");
 Collection<PSObject> results = ps.Invoke();

如果您不是真正处理并行任务,也不需要创建Runspace...

【讨论】:

  • 好答案,但请注意,隐式输出功能("Hello, World" 与显式 Write-Output "Hello, World")与是否在 last 管道段中使用无关
猜你喜欢
  • 2018-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多