如何格式化输出错误,以使服务器不在两次列出?

时间:2018-10-24 20:24:06

标签: powershell cmd

我有这个脚本:

$params = '/r', '/f',
          '/t', '0',
          '/d', 'p:0:0',
          '/c', 'PlannedRestart'

$servers | ForEach-Object {
    $output = & shutdown.exe /m "\\${_}" @params 2>&1
    if ($LastExitCode -eq 0) {
        "{0}`tRestarted" -f $_
    } else {
        "{0}`tRestart failed:`t{1}" -f $_, $output
    }
} | Set-Content '.\RestartServers_LOG.txt'

在失败时打印如下:

  

server1重新启动失败:server1:错误

我要打印:

  

server1重新启动失败:错误

1 个答案:

答案 0 :(得分:4)

如果主机名始终出现在捕获的输出的开头,则可以通过简单替换将其删除,例如像这样:

"{0}`tRestart failed:`t{1}" -f $_, ($output -replace "^${_}:")

如果它可以出现在输出字符串的不同位置,则需要提供一个更完整的输出示例。