如何在csv文件中附加计算机信息后面的多个监视器信息?

问题描述 投票:0回答:1

每次我运行我的powershell脚本时,我的输出都会进入一个csv文件,但是我想让它全部出现在一行上,现在它是如何工作的,对于每个监视器,我的计算机信息都位于每个监视器信息的前面:Current State

但我只想让我的Nth monitorinfo追加到第二个这样的后面:The state i want it to be in

我使用的代码:

$output = foreach($computer in $Desktop){

  ForEach ($Monitor in $Monitors){

    $Manufacturer = ($Monitor.ManufacturerName -notmatch 0 | ForEach-Object{[char]$_}) -join ""
    $Name = ($Monitor.UserFriendlyName         -notmatch 0 | ForEach-Object{[char]$_}) -join ""
    $Serial = ($Monitor.SerialNumberID         -notmatch 0 | ForEach-Object{[char]$_}) -join ""

        [PSCustomObject]@{
            "Merk" = $Desktop.CsManufacturer
            "Model" = $Desktop.CsModel
            "S/n" = $Desktop | Select-Object -expand BiosSeralNumber
            "PC Naam" = $Desktop.CsName
            "CPU" = $processor.Name
            "Memory" = "$RAM GB"
            "OS" = $Desktop.WindowsProductName
            "MAC LAN" = $MACLAN
            "MAC WIFI" = $MACWIFI
            "Office" = $officeVersion
            "Merk /Model" = $Manufacturer
            "Type" = $Name
            "SerialScherm" = $Serial
        }

  }

}

$output | Export-Csv -Path $GL\info.csv -NoTypeInformation -Delimiter ';'

因此,如果我有3个监视器,第3个监视器必须在第2个监视器后追加到同一行

powershell csv
1个回答
0
投票

以下可能会做你想要的:

$output = foreach($computer in $Desktop){
$Hash = [ordered]@{  "Merk" = $Desktop.CsManufacturer
            "Model" = $Desktop.CsModel
            "S/n" = $Desktop | Select-Object -expand BiosSeralNumber
            "PC Naam" = $Desktop.CsName
            "CPU" = $processor.Name
            "Memory" = "$RAM GB"
            "OS" = $Desktop.WindowsProductName
            "MAC LAN" = $MACLAN
            "MAC WIFI" = $MACWIFI
            "Office" = $officeVersion
    }
$MonitorNumbers = @($null)
$MonitorNumbers += (2..$Monitors.count)
$MonitorIndex = 0
  ForEach ($Monitor in $Monitors){

    $Manufacturer = ($Monitor.ManufacturerName -notmatch 0 | ForEach-Object{[char]$_}) -join ""
    $Name = ($Monitor.UserFriendlyName         -notmatch 0 | ForEach-Object{[char]$_}) -join ""
    $Serial = ($Monitor.SerialNumberID         -notmatch 0 | ForEach-Object{[char]$_}) -join ""

    $Hash.add("Merk /Model $($MonitorNumbers[$MonitorIndex])", $Manufacturer)
    $Hash.add("Type $($MonitorNumbers[$MonitorIndex])", $Name)
    $Hash.add("SerialScherm $($MonitorNumbers[$MonitorIndex])",$Serial)
    $MonitorIndex++
        }
[PSCustomObject]$Hash
  }

}
© www.soinside.com 2019 - 2024. All rights reserved.