无法使用powershell导出csv将错误消息附加到csv

无法使用powershell导出csv将错误消息附加到csv,powershell,csv,export-to-csv,Powershell,Csv,Export To Csv,我已经编写了以下示例脚本,它允许我收集环境中所有服务器的信息。但是,我没有访问所有服务器的权限,有时我会收到错误,希望捕获并存储在result.csv文件中 $Servers = Get-Content .\servers.txt foreach ($Server in $Servers){ try { Get-CimInstance Win32_OperatingSystem -ComputerName $server -ErrorAction Stop | Select-Obje

我已经编写了以下示例脚本,它允许我收集环境中所有服务器的信息。但是,我没有访问所有服务器的权限,有时我会收到错误,希望捕获并存储在result.csv文件中


$Servers = Get-Content .\servers.txt
foreach ($Server in $Servers){

try {
    Get-CimInstance Win32_OperatingSystem -ComputerName $server -ErrorAction Stop | Select-Object CSName, Caption, Version, OSArchitecture, InstallDate, LastBootUpTime | Export-Csv -append .\result.csv

} catch {

   $Error[0].Exception | Export-csv -Append .\resulttest.csv

}
}

通常情况下,脚本可以工作,但当我尝试保存错误时,会收到以下消息:

导出csv:无法将csv内容附加到以下文件: .\resultset.csv。附加的对象不具有以下属性: 对应于以下列:CSName。着手 属性不匹配,请添加-Force开关并重试。在 C:\temp\script\serverdata.ps1:10 char:26 +$Error[0]。异常|导出csv-追加。\resultset.csv + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +CategoryInfo:InvalidData:(CSName:String)[导出Csv],InvalidOperationException +完全平等

有没有办法解决这个问题

您可以尝试以下方法:

$Servers = Get-Content .\servers.txt

$Servers | ForEach-Object {
    $server = $_
    try {
        Get-CimInstance Win32_OperatingSystem -ComputerName $server -ErrorAction Stop | 
        Select-Object CSName, Caption, Version, OSArchitecture, InstallDate, LastBootUpTime, @{Name = 'Result'; Expression = {'OK'}}
    } 
    catch {
        # output an object with the same properties.
        "" | Select-Object @{Name = 'CSName'; Expression = {$server}}, 
                           Caption, Version, OSArchitecture, InstallDate, LastBootUpTime, 
                           @{Name = 'Result'; Expression = {'ERROR: {0}' -f $Error[0].Exception.Message}}
    }
} | Export-Csv .\result.csv -NoTypeInformation
你可以试试这个:

$Servers = Get-Content .\servers.txt

$Servers | ForEach-Object {
    $server = $_
    try {
        Get-CimInstance Win32_OperatingSystem -ComputerName $server -ErrorAction Stop | 
        Select-Object CSName, Caption, Version, OSArchitecture, InstallDate, LastBootUpTime, @{Name = 'Result'; Expression = {'OK'}}
    } 
    catch {
        # output an object with the same properties.
        "" | Select-Object @{Name = 'CSName'; Expression = {$server}}, 
                           Caption, Version, OSArchitecture, InstallDate, LastBootUpTime, 
                           @{Name = 'Result'; Expression = {'ERROR: {0}' -f $Error[0].Exception.Message}}
    }
} | Export-Csv .\result.csv -NoTypeInformation

你可能想看看。使用两个CSV,其中一个输出成功结果,另一个输出失败结果,或者如示例所示使用。您可能需要查看。要么使用两个CSV,一个输出成功结果,另一个输出失败结果,要么如示例所示使用。