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

Je reçois des erreurs comme ci-dessous que je voudrais avoir placé dans le CSV aussi bien et avec txt il est en baisse avec le nom du PC:Comment écrire les détails d'exception à 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

Répondre

2

Sounds comme vous avez besoin d'un Try/Catch dans une boucle ForEach. Je pense que quelque chose comme ça devrait le faire pour vous:

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

Même s'il y a plusieurs styles de code pour PoSh, je suggère de placer des espaces avant les accolades. – Clijsters