【问题标题】:Write-Host is doubled after running as remote command作为远程命令运行后,Write-Host 加倍
【发布时间】:2022-01-22 20:57:25
【问题描述】:

我正在尝试远程运行这段代码:

$servers = @("myserver.local")
Invoke-Command -ScriptBlock {
#############
Write-Host "Test1:" "xxx";
hostname
Write-Host "Test2:" "yyy";
#############
} -ComputerName $servers

得到这个输出:

Test1: xxx
Test1: xxx
myserver
Test2: yyy
Test2: yyy

预期输出:

Test1: xxx
myserver
Test2: yyy

如你所见,Write-Host 的输出翻了一番,但hostname 没问题。 为什么?

【问题讨论】:

  • 好像你在 2 个主机上运行这个
  • @Santiago Squarzon 我在 $servers 数组中只有一台服务器。

标签: windows powershell visual-studio-code ps


【解决方案1】:

这不是问题。您的输出加倍,因为您在两个服务器中执行它。如果你增加它,那么输出也会增加。

这里的问题是输出没有按照每个主机分别表示存在格式/顺序问题。

以下是根据您所做评论的示例。我已经将一个参数传递到远程系统的脚本块中,并将输出捕获到正在运行的 PS 会话中。

$hostname= 'RemoteComputer' #Input parameter

$results= Invoke-Command -ScriptBlock {param($hostname)Write-Host "Test1:" "xxx"; #taken the same input inside the script block using param
    $out=hostname #Stored the result in the $out variable
    Write-Host "Test2:" "yyy";
    $out #printed the result
} -ComputerName $servers -ArgumentList $hostname  #Passed the parameter in the scriptblock argument so that it can go inside as param

$results

为了便于理解,我在每一行都用 cmets 解释了这些行。

【讨论】:

  • "你在两个服务器上执行它。" - 如果$servers 数组只包含一台服务器,这怎么可能?为什么hostname不加倍?
  • @rGA145:主机名正在远程计算机的 PS 会话中打印,并且没有出现。您需要为此做一些技巧,并将这些东西作为参数和参数块传递。我将编辑我的答案并更新您。但您也必须更新问题
猜你喜欢
  • 2020-02-13
  • 1970-01-01
  • 2021-12-22
  • 1970-01-01
  • 1970-01-01
  • 2014-04-26
  • 2020-09-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多