我已将MAC地址作为字符串存储在变量中:
$macaddress= "1234567"
我正在尝试将命令的输出存储在另一个变量中:
$testing = { arp -a; | select-string $macaddress }
Write-Host $testing
如果在PowerShell中执行该命令,我看不到$macaddress
的值。它在屏幕中显示为“$ macaddress”,而不是其值“1234567”。
请帮我正确设置$macaddress
的值。
答案 0 :(得分:1)
问题是不如何定义变量$macaddress
,但在中如何尝试捕获命令输出。
删除封闭的{ ... }
和;
:
$testing = arp -a | select-string $macaddress
至于您尝试的内容:
{ ... }
创建一个脚本块,这是稍后执行的一段源代码(松散地说)(例如,使用运算符{{1} }或.
)。
如果您将脚本块传递给&
- whose use you should generally avoid,顺便说一下,它会转换为字符串,字符串表示形式为文字Write-Host
和{
之间的脚本块的内容 - 这就是您在输出中看到}
出现(未展开)的原因。
$macaddress
终止命令,只有在一行上放置多个命令时才需要。
管道仍被视为单命令,即使它由多个子命令组成; not 尝试在管道中使用;
- 你会破坏它(事实上,甚至你的脚本块创建命令也会破坏)。
答案 1 :(得分:0)
以这种方式尝试:
$macAddress = "00-01-02-03-04"
arp -a | Select-String $macAddress
如果要提取与MAC地址相关的IP地址,可以执行以下操作:
$macAddress = "00-01-02-03-04"
arp -a | Select-String ('\W*((?:[0-9]{1,3}\.){3}(?:[0-9]{1,3}))\W+(' +
$macAddress + ')') | ForEach-Object { $_.Matches[0].Groups[1].Value }