我无法弄清楚如何让$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输出
1条答案
按热度按时间kkbh8khc1#
我看到的问题是,$ModelInfo与$SerialNumber具有不同的列名,这引发了无法追加错误。可以使用-Force开关将$SerialNumber数据追加到现有列中,并将不匹配的列留空。
更改此选项:
对此:
这将创建看起来像这样的Computers.csv(我已经编辑了我的实际信息)。第一行是$ModelInfo对象的列名,第二行是$ModelInfo列中的数据,第三行是$SerialNumber导出中的数据,没有列名,并强制进入$ModelInfo的列。请注意第三行开头的两个逗号,这是不包含“Caption”或“Model”列的$SerialNumber对象的输出。
“标题”,“型号”,“PSComputerName”,“RunspaceId”,“PSShowComputerName”“ComputerName”,“计算机类型”,”ComputerName.domain.com“,“0000”,“True”,,“ComputerName.domain.com”,“0000”,“True”