powershell 导出为CSV:需要帮助将输出合并为CSV

jchrr9hc  于 2023-10-18  发布在  Shell
关注(0)|答案(1)|浏览(127)

我无法弄清楚如何让$ModelInfo和$SeriaNumber在一行上输出到CSV。

$LocalComputer = Read-Host "Enter Local Computer Name"
$Computer = Import-Csv \\$LocalComputer\c$\Scripts\Computerlist.Csv

foreach ($Computer in $Computer) {

    $PingTest = Test-Connection $Computer.Name -Count 1 -Quiet

    if ($PingTest -eq $false) {

        Write-Host $Computer.name -ForegroundColor Red
        $Computer | Select-Object name | Export-Csv \\$LocalComputer\C$\Scripts\FailedComputer.Csv -Append

    }

    else {

        Write-Host $Computer.name -ForegroundColor Green
        Get-Service -ComputerName $Computer.name -name winrm | restart-Service
        start-sleep -s 1
        $ModelInfo = Invoke-Command -Cn $Computer.name -ScriptBlock { get-wmiobject win32_computersystem | select-object Caption, Model }
        $ModelInfo | export-csv \\$LocalComputer\C$\Scripts\Computers.Csv -Append
        $SerialNumber = Invoke-Command -Cn $Computer.name -ScriptBlock { get-wmiobject win32_bios | select-object SerialNumber }
        $SerialNumber | export-csv \\$LocalComputer\C$\Scripts\Computers.Csv -Append

    }

}

CSV中的$SerialNumber信息将覆盖$ModelInfo输出

kkbh8khc

kkbh8khc1#

我看到的问题是,$ModelInfo与$SerialNumber具有不同的列名,这引发了无法追加错误。可以使用-Force开关将$SerialNumber数据追加到现有列中,并将不匹配的列留空。
更改此选项:

$ModelInfo = Invoke-Command -Cn $Computer.name -ScriptBlock { get-wmiobject win32_computersystem | select-object Caption, Model }
$ModelInfo | export-csv \\$LocalComputer\C$\Scripts\Computers.Csv -Append
$SerialNumber = Invoke-Command -Cn $Computer.name -ScriptBlock { get-wmiobject win32_bios | select-object SerialNumber }
$SerialNumber | export-csv \\$LocalComputer\C$\Scripts\Computers.Csv -Append

对此:

$ModelInfo = Invoke-Command -Cn $Computer.name -ScriptBlock { get-wmiobject win32_computersystem | select-object Caption, Model }
$ModelInfo | export-csv \\$LocalComputer\C$\Scripts\Computers.Csv -Append
$SerialNumber = Invoke-Command -Cn $Computer.name -ScriptBlock { get-wmiobject win32_bios | select-object SerialNumber }
$SerialNumber | export-csv \\$LocalComputer\C$\Scripts\Computers.Csv -Append -Force

这将创建看起来像这样的Computers.csv(我已经编辑了我的实际信息)。第一行是$ModelInfo对象的列名,第二行是$ModelInfo列中的数据,第三行是$SerialNumber导出中的数据,没有列名,并强制进入$ModelInfo的列。请注意第三行开头的两个逗号,这是不包含“Caption”或“Model”列的$SerialNumber对象的输出。
“标题”,“型号”,“PSComputerName”,“RunspaceId”,“PSShowComputerName”“ComputerName”,“计算机类型”,”ComputerName.domain.com“,“0000”,“True”,,“ComputerName.domain.com”,“0000”,“True”

相关问题