如何将PowerShell 5.1中Invoke-Command的结果转为逗号分隔字符串
PowerShell 5.1:将Invoke-Command结果转为逗号分隔字符串
你可以通过以下几种简洁方式实现需求:
方法1:使用PowerShell原生-join运算符
这是最直接的实现方式,Invoke-Command执行{hostname}后返回的是字符串数组,直接用-join拼接即可:
# 执行命令并保存结果 $hostNames = Invoke-Command -ComputerName $manyComputers -Credential $credential -ScriptBlock {hostname} # 转换为逗号分隔字符串 $commaSeparatedStr = $hostNames -join ','
方法2:使用.NET的string.Join方法
若你习惯.NET语法,也可以采用这种写法:
$hostNames = Invoke-Command -ComputerName $manyComputers -Credential $credential -ScriptBlock {hostname} $commaSeparatedStr = [string]::Join(',', $hostNames)
额外处理:过滤执行失败的结果
如果存在部分计算机执行命令失败的情况,结果中会混入错误对象,可先过滤后再拼接:
# 静默忽略错误,仅收集成功返回的结果 $hostNames = Invoke-Command -ComputerName $manyComputers -Credential $credential -ScriptBlock {hostname} -ErrorAction SilentlyContinue # 只保留字符串类型的结果并拼接 $commaSeparatedStr = $hostNames.Where({ $_ -is [string] }) -join ','
内容的提问来源于stack exchange,提问作者Rod
相关产品推荐
相关产品推荐

