如何编写异常细节,以CSV
问题描述:
Import-Module ActiveDirectory
$computers = Get-ADComputer -Filter * -SearchBase "OU=workstations,DC=company,DC=org" |
Select-Object -Expand Name
$wmiObjs = Get-WmiObject -Class Win32_ComputerSystem -Property Name, Model -ComputerName $computers |
select Name, Model |
Export-Csv c:\temp\workstations-models.csv
我收到错误,如下面,我想已经放置到CSV以及与TXT它来与PC名称:如何编写异常细节,以CSV
Get-WmiObject : The RPC server is unavailable. (Exception from HRESULT: 0x800706BA) At line:3 char:12 + $wmiObjs = Get-WmiObject -Class Win32_ComputerSystem -Property Name, ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [Get-WmiObject], COMException + FullyQualifiedErrorId : GetWMICOMException,Microsoft.PowerShell.Commands.GetWmiObjectCommand
答
声音就像你在ForEach
循环中需要一个Try/Catch
一样。我认为像这样应该为你做:
Import-Module ActiveDirectory
$computers = Get-ADComputer -Filter * -SearchBase "OU=workstations,DC=company,DC=org" |
Select-Object -Expand Name
$wmiobjects = ForEach($Computer in $Computers){
Try{
Get-WmiObject -Class Win32_ComputerSystem -Property Name, Model -ErrorAction Stop -ComputerName $Computer |
select Name, Model
}Catch{
[PSCustomObject]@{'Name'=$Computer;'Model'='Offline'}
}
}
$wmiobjects | Export-Csv c:\temp\workstations-models.csv -NoTypeInformation
即使有几种代码样式的PoSh,我会建议在花括号之前放置空格。 – Clijsters