写主机并登录一行?

Spe*_*ico 2 powershell write-host

我是PowerShell的新手,因此可以自我学习。我的问题是,您是否可以在同一行上同时执行“写入主机”和“日志写入”操作?

我所拥有的是:

Write-Host "Node Id is $nodeProps["NodeID"]" 
LogWrite "Node Id is $nodeProps["NodeID"]"
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有一种方法可以做到:

Write-Host, LogWrite "Node Id is $nodeProps["NodeID"]"
Run Code Online (Sandbox Code Playgroud)

感谢您提供的所有帮助!

mkl*_*nt0 5

可以将管道与ForEach-Objectcmdlet(%是其内置别名)一起使用,如下所示:

"Node Id is $($nodeProps["NodeID"])" | % { Write-Host $_; LogWrite $_ }
Run Code Online (Sandbox Code Playgroud)

请注意,如何将对引用的引用$nodeProps["NodeID"]包含在内$(...)

如果反复需要此功能,请定义一个(简单的)函数:

function writeAndLog([string] $msg) { Write-Host $msg; LogWrite $msg }

writeAndLog "Node Id is $($nodeProps["NodeID"])"
Run Code Online (Sandbox Code Playgroud)

PS:由campbell.rw的评论提示:

如果你不喜欢使用的想法ForEach-Object-这是通常用于循环多个输入对象-在一个单一的输入项,你可以用一个脚本块,用&中,调用操作

& { Write-Host $args[0]; LogWrite $args[0] } "Node Id is $($nodeProps["NodeID"])"
Run Code Online (Sandbox Code Playgroud)

$args是所有(未绑定)参数的集合,因此$args[0]是指第一个。(在这种情况下,引用$args也可以。)