2017-08-01 159 views
0

我試圖把端口使用命令「Get-VersionInfo」在表中。使用PowerShell,我無法弄清楚如何在計算出的屬性中輸出這個佔位符。如果我停止它並進行調試,我可以將鼠標放在「$ _。Port」上,並且它顯示「Port = 50003」。所以我知道它會查看它是什麼端口,但是當它輸出到表時,它是空白的。 腳本:

Get-Content "C:\Users\textfile" | Foreach ` { 
Get-VersionInfo -Device 10.247.46.123 -Port $_ | 
Select-Object IPAddress, Category, Prompt, Hostname, MACAddress, VersionOS, @{l="Port";e={ $_.Port}} | Format-table -autosize 
} 

輸出:

IPAddress Category  Prompt Hostname  MACAddress  VersionOS  Port 
    --------- --------  ------ --------  ----------  ---------  ---- 
169.254.40.2 Control System DMB-I-S DMB-I-S--548190 00.10.7F.54.81.90 1.501.2964.38161 

謝謝!

+0

圍繞端口作爲select-object屬性的格式很奇怪,我從來沒有見過它。你想達到什麼目的,特別是這些代碼? –

+0

這些設備是音頻/視頻設備,命令由製造商在自定義模塊中提供。我只需要弄清楚如何將文本文件中使用的文本(端口)放在特定的for-each命令中並將其輸出到表 –

+1

@MaximeFranchot它是[「計算屬性」](https:// technet。 microsoft.com/en-us/library/ff730948.aspx)。 'l'是Label的簡稱,'e'是表達式的簡稱,它是動態添加select對象列表中的屬性的簡短方式,從流水線獲取值而不是執行整個foreach對象{$ _ |添加成員...}'。 – TessellatingHeckler

回答

0

所以我想出瞭如何傳遞foreach對象。

$Ver = Foreach ($Port in Get-Content C:\Script\Port.txt) 
{ Get-VersionInfo -Device 10.10.10.10 -Port $Port | 
Where-Object {$_.Ping -eq 'True'} | 
Select-Object IPAddress, Category, Prompt, Hostname, Serial, MACAddress, VersionOS, @{l="Port";e={$Port}}, Build, Ping, TSID 
} 

希望這可以幫助別人。謝謝你們