2017-05-01 49 views
2

我已存儲的MAC地址作爲一個變量的字符串:選擇字符串不採取在可變的powershell

$macaddress= "1234567" 

我試圖從命令輸出存儲在另一個變量:

$testing = { arp -a; | select-string $macaddress } 
Write-Host $testing 

如果該命令在PowerShell中執行,我看不到$macaddress的值。它在屏幕上顯示爲'$ macaddress',而不是其值「1234567」。

請幫我正確設定$macaddress的值。

回答

1

問題是你如何定義變量$macaddress,但在如何試圖拍攝命令的輸出
取下封閉{ ... };

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

至於你試過

{ ... }創建腳本塊,這是一段源代碼(嚴格地講)爲執行(例如,與運營商.&)。

如果您通過一個腳本塊Write-Host - whose use you should generally avoid,順便 - 它轉換爲和字符串表示是{}之間的腳本塊的文字內容 - 這就是爲什麼你在輸出中看到$macaddress出現(未展開)。

;終止一個命令,並且只有當您將多個命令放在一行上時纔是必需的。
管道仍然被認爲是一個單個命令,即使它是由多個子命令組成的;做而不是嘗試在管道中使用;--你會破壞它(事實上,甚至你的腳本塊創建命令也會中斷)。

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 }