簡體   English   中英

如何使用 PowerShell 將有關監視器的信息導出到 csv 文件?

[英]How to export information about the monitor to a csv file using PowerShell?

我是 PowerShell 的新手,正在努力編寫一個腳本來導出三個監視器的UserFriendlyName (見下面的代碼)。 這是我到目前為止所擁有的:

$monitors = Get-WmiObject -Namespace root\wmi -Class wmiMonitorID

Get-CimInstance -Namespace root\wmi -ClassName wmimonitorid -ComputerName $ComputerName |

foreach {
    $Object = New-Object PSObject -Property @{
        MonitorName = ($monitors.UserFriendlyName -notmatch '^0$' | foreach {[char]$_}) -join ""
        MonitorSerial = ($monitors.serialnumberid -notmatch '^0$' | foreach {[char]$_}) -join ""
    } 
}

$Object | Select MonitorName,MonitorSerial
$Object | Export-Csv -append -force /Computer.csv -NoTypeInformation

我得到的結果:

MonitorName                MonitorSerial                        
-----------                -------------                        
27B1DELL P2717HDELL P2717H GUHJBHA018695YKNFG6CQAGLLYKNFG71KAPTL

我想將每個監視器名稱和序列號放在它們自己的列( Monitor 1Monitor 2Monitor 3和序列號相同)下,但這些值是在一起的。 任何幫助深表感謝。

我希望將上述內容與此結合:

$computerSystem = Get-CimInstance CIM_ComputerSystem
$computerBIOS = Get-CimInstance CIM_BIOSElement
$computerOS = Get-CimInstance CIM_OperatingSystem
$computerCPU = Get-CimInstance CIM_Processor
$computerHDD = Get-CimInstance Win32_LogicalDisk -Filter "DeviceID = 'C:'"

Get-CimInstance -Namespace root\wmi -ClassName wmimonitorid -ComputerName $ComputerName | 

foreach {


$Object = New-Object PSObject -Property @{
    "Computer Name" = $computerSystem.Name
    "Operating System" = $computerOS.caption + ", Service Pack: " + $computerOS.ServicePackMajorVersion
    "Manufacturer" = $computerSystem.Manufacturer
    "Model" = $computerSystem.Model
    "Serial Number" = $computerBIOS.SerialNumber
    "CPU" = $computerCPU.Name
    "HDD Capacity" = "{0:N2}" -f ($computerHDD.Size/1GB) + "GB"
    "RAM" = "{0:N2}" -f ($computerSystem.TotalPhysicalMemory/1GB) + "GB"
    "User logged In" = $computerSystem.UserName
    } 
}

$Object | Export-Csv -append -force /Computer.csv -NoTypeInformation

您的代碼似乎有些不對勁。 您應該將每個監視器添加到數組或列表中。

$monitors = Get-WmiObject -Namespace root\wmi -Class wmiMonitorID

$allMonitors = @()

Get-CimInstance -Namespace root\wmi -ClassName wmimonitorid -ComputerName $ComputerName |

foreach {
    $Object = [PSCustomObject]@{
        MonitorName = ($monitors.UserFriendlyName -notmatch '^0$' | foreach {[char]$_}) -join ""
        MonitorSerial = ($monitors.serialnumberid -notmatch '^0$' | foreach {[char]$_}) -join ""
    } 

    $allMonitors += $Object
}

$allMonitors | Select MonitorName,MonitorSerial
$allMonitors | Export-Csv -append -force /Computer.csv -NoTypeInformation

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM