我是 PowerShell 的新手,当时是自学的。我的问题是,您能否在同一行上同时使用“write-host”和“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
的想法 - 它通常用于循环 多个 输入对象 - on 单个输入项,您可以使用脚本 block ,&
,调用操作符:
& { Write-Host $args[0]; LogWrite $args[0] } "Node Id is $($nodeProps["NodeID"])"
$args
是所有(未绑定(bind))参数的集合,因此 $args[0]
指的是第一个。 (在这种特殊情况下,仅引用 $args
也可以。)
关于powershell - 写主机和登录在一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41252501/