我已经将MAC地址作为字符串存储在变量中:

$macaddress= "1234567"

我正在尝试将命令的输出存储在另一个变量中:
 $testing = { arp -a; | select-string  $macaddress }
 Write-Host $testing

如果命令在PowerShell中执行,则看不到$macaddress的值。它在屏幕中显示为“$ macaddress”,而不是其值“1234567”。

请帮助我正确设置$macaddress的值。

最佳答案

问题不在于如何定义变量$macaddress,而是在于如何尝试捕获命令输出。
删除封闭的{ ... };:

$testing = arp -a | select-string $macaddress

至于您尝试了什么:
{ ... }创建一个脚本块,该脚本块是一段源代码(通常来说),供以后执行(例如,使用.&运算符)。

如果您将脚本块传递给Write-Host-whose use you should generally avoid,它会转换为字符串,并且字符串表示形式就是{}之间的脚本块的文字内容-这就是为什么看到$macaddress在您的脚本中出现(未扩展)输出。
;终止命令,仅当在一行上放置多个命令时才需要。
尽管管道由多个子命令组成,但管道仍被视为单个命令。不要尝试在管道中使用; -会破坏它(实际上,甚至您的script-block-creating命令也会破坏)。

关于powershell - 选择字符串在PowerShell中不接受变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43724584/

10-12 04:55