无法使用powershell导出csv将错误消息附加到csv
我已经编写了以下示例脚本,它允许我收集环境中所有服务器的信息。但是,我没有访问所有服务器的权限,有时我会收到错误,希望捕获并存储在result.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
$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,一个输出成功结果,另一个输出失败结果,要么如示例所示使用。