2017-03-03 4 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 

Ich bekomme Fehler wie die, unter dem schreibe ich auch in die CSV platziert haben möchten und mit txt ist es unten mit PC-Name:Wie Ausnahme Details zu 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

Antwort

2

Sounds wie Sie brauchen eine Try/Catch in einer ForEach Schleife. Ich denke, etwas wie das sollte es für Sie tun:

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

Auch wenn es mehrere Code-Stile für PoSh, würde ich vorschlagen, Leerzeichen vor geschweiften Klammern zu platzieren. – Clijsters

Verwandte Themen