我是PowerShell的新手,并在那一刻自我教。我的问题是,您可以在同一行上有"写入者"one_answers" log-write",以作为一个动作运行?
我拥有的是:
Write-Host "Node Id is $nodeProps["NodeID"]"
LogWrite "Node Id is $nodeProps["NodeID"]"
,但我想知道是否有一种方法可以这样做:
Write-Host, LogWrite "Node Id is $nodeProps["NodeID"]"
感谢您的任何帮助!
您可以使用ForEach-Object
CMDLET(%
是其内置别名)使用管道,如下:
"Node Id is $($nodeProps["NodeID"])" | % { Write-Host $_; LogWrite $_ }
请注意,如何在$(...)
中包含对$nodeProps["NodeID"]
的引用才能工作。
如果您需要重复使用此功能,请定义一个(简单的)函数:
function writeAndLog([string] $msg) { Write-Host $msg; LogWrite $msg }
writeAndLog "Node Id is $($nodeProps["NodeID"])"
p.s。:campbell.rw的提示:
如果您不喜欢使用 ForEach-Object
的想法 - 通常使用 loop 多个输入对象 - 在 single> single 上输入项目,您可以使用脚本块,与 &
, call operator :
& { Write-Host $args[0]; LogWrite $args[0] } "Node Id is $($nodeProps["NodeID"])"
$args
是所有(未结合)参数的集合,因此$args[0]
是指第一个参数。(在这种特殊情况下,只引用$args
也可以工作。)
您可以使用 Tee-Object
cmdlet将管道流复制到文件:
"Node Id is $($nodeProps["NodeID"])" |Tee-Object -FilePath C:devtest2.txt -Append |Write-Host