我希望能够为计算机迭代一系列监视器(通过WMI拉取),然后为每个监视器分配自己的值,这样我就可以将结果输出到csv,每个监视器,mfg, date,sn在它自己的列上。
例如:
Monitor 1 MFG Monitor 1 SN Monitor 2 MFG Monitor 2 SN
Dell 12345 HP 05156
我知道如何输出到csv,只是在分配每个自己的变量时遇到问题。
$Monitors = Get-WmiObject -Namespace root\wmi -Class wmiMonitorID -ComputerName "PC"
$Monitors | % {$i=0} {"$_";$i++}
这可以获取机器上每个监视器的每个实例名称,但是我如何为每个监视器获取串口等?
我尝试使用$ _.SerialNumberID将其拉出来,但我无法弄清楚
答案 0 :(得分: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