none
Script Powershell pour get-adcomputer et get-hotfix dans le même script RRS feed

  • Discussion générale

  • Bonjour,

    Je dois faire un script listant les ordinateurs sous Windows 7 de l'active directory, du genre :

    Get-ADComputer -Filter { OperatingSystem -Like '*7*' } -Properties OperatingSystem | Format-Table Name,OperatingSystem -AutoSize | Out-File C:\w7systems.txt

    Mais en ajoutant une colonne à ce tableau, la hotfixID.

    Je suis vraiment bloqué, j'ai beau chercher (sûrement aux mauvais endroits) et je trouve pas...

    Merci pour votre aide,

    Kalomer


    • Modifié Kalomer mardi 30 janvier 2018 14:04 info compromettante...
    mardi 23 janvier 2018 09:36

Toutes les réponses

  • Bonjour Kalomer,

    Dîtes moi si ce script répond à votre besoin :

    $csvArray = @()
    Get-ADComputer -Filter { OperatingSystem -Like '*7*' } -Properties OperatingSystem | ForEach-Object {
        $HotFixObject = (Get-HotFix -ComputerName $_.Name).HotFixID
        $HotFixObject | % { $HotFixString += "$_ "} 
        $psObj = New-Object PSObject
        $psObj | Add-Member -MemberType NoteProperty -Name ComputerName -Value $($_.Name) -Force
        $psObj | Add-Member -MemberType NoteProperty -Name OperatingSystem -Value $($_.OperatingSystem) -Force
        $psObj | Add-Member -MemberType NoteProperty -Name HotFix -Value $( $HotFixString ) -Force
        $csvArray += $psObj
    
    }
    $csvArray | Export-Csv "the_csv.csv" -NoTypeInformation  
    
    

    mardi 23 janvier 2018 11:19
  • Bonjour Romain,

    Je vous remercie pour votre réponse et votre aide !!

    J'ai tenté le script dans PowerShell ISE, mais j'ai eu un message d'erreur...

    PS C:\Windows\system32> $csvArray = @()
    Get-ADComputer -Filter { OperatingSystem -Like '*7*' } -Properties OperatingSystem | ForEach-Object {
        $HotFixObject = (Get-HotFix -ComputerName $_.Name).HotFixID
        $HotFixObject | % { $HotFixString += "$_ "} 
        $psObj = New-Object PSObject
        $psObj | Add-Member -MemberType NoteProperty -Name ComputerName -Value $($_.Name) -Force
        $psObj | Add-Member -MemberType NoteProperty -Name OperatingSystem -Value $($_.OperatingSystem) -Force
        $psObj | Add-Member -MemberType NoteProperty -Name HotFix -Value $( $HotFixString ) -Force
        $csvArray += $psObj

    }
    $csvArray | Export-Csv "the_csv.csv" -NoTypeInformation

    Get-HotFix : Le serveur RPC n’est pas disponible. (Exception de HRESULT : 0x800706BA)
    Au caractère Ligne:3 : 22
    +     $HotFixObject = (Get-HotFix -ComputerName $_.Name).HotFixID
    +                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [Get-HotFix], COMException
        + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException,Microsoft.PowerShell.Commands.GetHotFixCommand

    Je suis aller cocher : "activer les services Internet COM sur mon ordinateur", et pourtant même message...

    Que devrais-je faire d'autre?

    mardi 23 janvier 2018 13:54
  • Il n'y a pas un firewall entre les deux machines ?

    Le service RPC est-il démarré ? (remote procedure call (RPC)) je n'ai pas le nom français, je travail sur des machines américaines...

    mardi 23 janvier 2018 15:00
  • Bonjour,

    Pardon pour la réponse très tardive...

    Le service RPC est bien activé, et il n'y a pas de pare-feu qui pourrait gêner quoique ce soit...

    C'est bien la commande Get-Hotfix qui ne passe pas... Et j'imagine qu'il n'y a pas d'autre moyen d'obtenir la HotfixID (KB) pour chaque ordinateur de la liste :

    Get-ADComputer -Filter { OperatingSystem -Like '*7*' } -Properties OperatingSystem | Format-Table Name,OperatingSystem -AutoSize | Out-File C:\w7systems.txt ?

    Merci encore pour votre aide :)

    Kalomer

    mardi 30 janvier 2018 14:04