使用的Power
shell版本:3.0
大家好,
我正在尝试创建一个新的Powershell管道并在其中执行一个脚本,然后将它产生的输出转换为输出变量,但是我无法从对象内部(从执行的脚本)获得任何输出.这一切的重点是,我不必管理$Error对象,我打算用它来进行错误检测.这是一个例子如下:
$ps = [Powershell]::Create()
$File = ".\Test2.ps1"
$SortedParams = "-Name blah -Key foo"
$RootDirectory = Get-Location
$ExecutionDirectory = "$RootDirectory\Test3"
$ps.AddCommand("Set-Location").AddParameter("Path", "$ExecutionDirectory")
write-host "COMMAND 1: " $ps.Commands.Commands.Item(0).CommandText
$ps.AddScript("$File $SortedParams")
write-host "COMMAND 2: " $ps.Commands.Commands.Item(1).CommandText
$output = $ps.Invoke()
write-host $output
我应该提一下,我正在尝试使用以下3种方法在执行的脚本中生成输出:
>写主机
>写输出
> Write-Verbose(使用$ps.Streams.Verbose尝试获取输出,但没有)
非常感谢您提出的任何建议或提示!
最佳答案 除非您觉得特定需要按照您的方式执行操作,否则您可能需要考虑使用PowerShell后台作业.
后台作业允许您在单独的PowerShell实例中运行PowerShell命令,然后将这些作业的输出收集到变量中(如果这是您要执行的操作).
查看about_Jobs帮助主题以获取更多信息.
这是一个简单的例子:
$job = Start-Job -ScriptBlock { "Hello World!" }
$ret = Receive-Job $job -Wait -AutoRemoveJob
# value of $ret will be "Hello World!"