【问题标题】:Write-Host and function return value写主机和函数返回值
【发布时间】:2015-12-16 05:53:39
【问题描述】:

我有一个执行此操作的 PowerShell 脚本:

$result = powershell -command $((Get-ChildItem $script).Fullname) $arguments

$result | % { Write-Host -ForegroundColor Red $_ }

在启动的脚本中,我想在屏幕上显示一些文本并返回一个值。基本上,我的想法是“如果返回某些东西 => 有问题,我会显示它”。但我也想显示一些输出,因为启动的脚本可能需要一些时间来执行,我想显示一些输出。

目前,启动的脚本是这样的:

Param(...)

Write-Host "Some status..."

if (SOMETHING_IN_ERROR)
{
  return "There is an error";
}

除了在启动脚本完成后显示“输出消息”和“错误”外,它正在工作,而不是在执行期间显示。我有点理解为什么,但我找不到能够返回错误并显示一些输出消息的好方法。

【问题讨论】:

    标签: powershell


    【解决方案1】:

    使用呼叫运算符 (&):

    $result = & $script $arguments
    
    $result | % { Write-Host -ForegroundColor Red $_ }
    

    在另一个 PowerShell 进程中运行脚本会将该进程的主机输出与其成功输出流 (vulgo STDOUT) 合并,因此您在处理 $result 时将获得整个输出。调用操作员在相同的环境中运行脚本,因此您在被调用脚本运行时获得主机输出,在处理$result时获得成功输出。

    【讨论】:

    • 问题是我真的想要创建一个新的 Powershell 会话。事实上,我正在使用 SharePoint,而 Powershell 缓存给我带来了一些问题。 (Powershell 在 SharePoint commandlet 更新后继续引用旧文件内容)
    • 你可以有一个或另一个,不能同时拥有。
    猜你喜欢
    • 1970-01-01
    • 2019-11-07
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-09
    • 1970-01-01
    相关资源
    最近更新 更多