2014-10-08 98 views
0

我希望能夠遍歷計算機的監視器數組(通過WMI拉出),然後爲每個計算機分配自己的值,以便可以輸出結果到一個csv,每個監視器,製造商,日期,sn在它自己​​的列上。如何爲每個循環項目分配變量名稱 - Powershell

例如:

Monitor 1 MFG  Monitor 1 SN  Monitor 2 MFG  Monitor 2 SN
 Dell    12345   HP    05156


我知道如何輸出到CSV已經,assiging每到其自己的變量只是我有問題使用。

$Monitors = Get-WmiObject -Namespace root\wmi -Class wmiMonitorID -ComputerName "PC" 
$Monitors | % {$i=0} {"$_";$i++} 

這使我得到機器上每個顯示器的每個實例的名稱,但我將如何去抓每一個串行等?

我試着使用$ _。SerialNumberID拉出來,但我無法弄清楚

回答

2

嗯......這裏是你會怎麼做。它看起來像wmi中的一些東西的數據需要被轉換爲可讀的。

$Monitors = Get-WmiObject -Namespace root\wmi -Class wmiMonitorID  
$obj = Foreach ($Monitor in $Monitors) 
{ 
    [pscustomobject] @{ 
    'MonitorMFG' = [char[]]$Monitor.ManufacturerName -join '' 
    'MonitorSerial' = [char[]]$monitor.SerialNumberID -join '' 
    'MonitorMFGDate' = $Monitor.YearOfManufacture 
    } 
} 
$obj 
$obj | export-csv 

編輯...替代方案更接近您想要的格式...我認爲上述個人更好。

$Monitors = Get-WmiObject -Namespace root\wmi -Class wmiMonitorID 
$i = 1 
$obj = new-object -type psobject 
Foreach ($Monitor in $Monitors) 
    { 
    $obj | add-member -Name ("Monitor$i" +"MFG") -Value ([char[]]$Monitor.ManufacturerName -join '') -MemberType NoteProperty -Force 
    $obj | add-member -Name ("Monitor$i" + "Serial") -Value ([char[]]$monitor.SerialNumberID -join '') -MemberType NoteProperty -Force 
    $obj | add-member -Name ("Monitor$i" + "MFGDate") -Value ($Monitor.YearOfManufacture) -MemberType NoteProperty -Force  
    $i++ 
    } 
$obj 
$obj | export-csv 
+1

值得注意的是,您至少需要使用PowerShell 3.0來按自己的方式執行「[pscustomobject]」。 – Matt 2014-10-08 15:34:04

+0

完美!我以前能夠實現你在第一塊代碼中所做的,但第二塊完全是我想要的,謝謝! – Bajan 2014-10-08 16:33:25

+1

不客氣,很高興我能幫上忙。 @matt - 很好的提及 – 2014-10-08 17:09:48

相關問題