我已经将MAC地址存储为字符串变量:
$macaddress= "1234567"
我正在尝试将命令的输出存储在另一个变量中:
$testing = { arp -a; | select-string $macaddress }
Write-Host $testing
如果在PowerShell中执行此命令,我看不到
$macaddress
的值。它会显示为'$macaddress'而不是它的值"1234567"。请帮我正确设置
$macaddress
的值。我已经将MAC地址存储为字符串变量:
$macaddress= "1234567"
我正在尝试将命令的输出存储在另一个变量中:
$testing = { arp -a; | select-string $macaddress }
Write-Host $testing
$macaddress
的值。它会显示为'$macaddress'而不是它的值"1234567"。$macaddress
的值。$macaddress
,而在于您尝试捕获命令输出的方式。{ ... }
和分号;
即可。$testing = arp -a | select-string $macaddress
{ ... }
创建一个“脚本块”,它是一段源代码(宽泛地说)用于稍后执行(例如,使用运算符.
或&
)。Write-Host
- 顺便说一下,应该避免使用它 - 它会被转换为字符串,并且字符串表示是脚本块中{
和}
之间的字面内容 - 这就是为什么您在输出中看到了未展开的$macaddress
。
;
用于终止一个命令,只有当你在一行中放置多个命令时才需要使用它。
管道仍然被视为一个单独的命令,即使它由多个子命令组成;不要尝试在管道中使用;
- 这会导致其出错(事实上,甚至你创建脚本块的命令也会出错)。
尝试这种方式:
$macAddress = "00-01-02-03-04"
arp -a | Select-String $macAddress
$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 }
select-string ('('+$var+'regex'))
。 - Timo