2017-03-03 23 views
0
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

回答

2

聲音就像你在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 
+0

即使有幾種代碼樣式的PoSh,我會建議在花括號之前放置空格。 – Clijsters