Сценарий Poweshell для экспорта трех данных монитора в CSV - PullRequest
0 голосов
/ 21 февраля 2020

Я новичок в 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

Я бы хотел, чтобы каждое имя монитора и серийный номер находились в своем собственном столбце (монитор 1, монитор 2, монитор 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

1 Ответ

0 голосов
/ 21 февраля 2020

Что-то не так с вашим кодом. Вы должны добавить каждый монитор в массив или список.

$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
...