【发布时间】:2022-08-14 17:50:37
【问题描述】:
我有以下脚本,它为我提供了我需要的信息。
$Monitors = Get-WmiObject WmiMonitorID -Namespace root\\wmi
$LogFile = \"d:\\monitors.csv\"
\"Manufacturer,Name,Serial\" | Out-File $LogFile
ForEach ($Monitor in $Monitors)
{
$Manufacturer = ($Monitor.ManufacturerName|where {$_ -ne 0}|ForEach{[char]$_}) -join \"\"
$Name = ($Monitor.UserFriendlyName |where {$_ -ne 0}| ForEach{[char]$_}) -join \"\"
$Serial = ($Monitor.SerialNumberID |where {$_ -ne 0}| ForEach{[char]$_}) -join \"\"
\"$Manufacturer,$Name,$Serial\" | Out-File $LogFile -append
}
我的问题是数据像这样导出到excel电子表格..
制造商、名称、序列号。
ACI,VE248,K8LMQS048382
HWP,HP P232,6CM8122DXL
HWP,HP P232,6CM7241DRB
我需要它是:
Manufacturer Name Serial在电子表格中,当我做下一台电脑时,它会添加到下一行,依此类推。
我在网上查过,例子不匹配。
有人有建议吗?
-
为什么不直接使用Export-Csv?:
Get-WmiObject WmiMonitorID -Namespace root\\wmi |Select-Object Manufacturer, Name, Serial |Export-Csv -append $LogFile -
+1 对 iRon 所说的话。
Get-WmiObject WmiMonitorID -Namespace root\\wmi | Select-Object @{n = \'Manufacturer\'; e = { ($_.ManufacturerName | Where-Object { $_ -ne 0 } | ForEach-Object { [char]$_ }) -join \'\' } }, @{n = \'Name\'; e = { ($Monitor.UserFriendlyName | Where-Object { $_ -ne 0 } | ForEach-Object { [char]$_ }) -join \'\' } }, @{n = \'Serial\'; e = { ($Monitor.SerialNumberID | Where-Object { $_ -ne 0 } | ForEach-Object { [char]$_ }) -join \'\' } } | Export-Csv -Path $LogFile -
当我运行它时,我在第一行 #TYPE Selected.System.Management.ManagementObject 得到这个,当我再次运行它时,它会删除信息而不是将其添加到下一行......
-
将
-NoTypeInformation -Append添加到Export-Csv命令然后... -
很抱歉打扰了,但是当我运行时,所有 3 个型号都相同。这需要tweeked吗?
标签: excel powershell format