Search this site
Embedded Files
Spelldragon's IT
  • Welcome Spelldragons
    • News
    • Scripts
      • Script Powershell
        • Powershell : Addressed a mail
        • Powershell : Uninstall Powershell 1.0
        • Powershell : List details from extended files
        • Powershell : Add a Module
        • Powershell : Check local groups and members attached to it
        • Powershell : Check Des versions Mcafee
        • Powershell : Comment connaitre la version du Powershell ?
        • Powershell : creer un log simplement
      • Script Batch
        • Modification de l'hibernation
    • Common Sense
    • Infrastructure and Application
      • Citrix
        • Xendesktop
          • Check Attached User to Xendesktop Catalogs
          • Multisession Error on Connect to My PC
      • DNS
        • Add and delete DNS informations
      • WSUS
        • Re-Installer WSUS 3.0 SP2
        • WSUS : Accès à la base WSUS par Management Studio
    • Windows
Spelldragon's IT
  • Welcome Spelldragons
    • News
    • Scripts
      • Script Powershell
        • Powershell : Addressed a mail
        • Powershell : Uninstall Powershell 1.0
        • Powershell : List details from extended files
        • Powershell : Add a Module
        • Powershell : Check local groups and members attached to it
        • Powershell : Check Des versions Mcafee
        • Powershell : Comment connaitre la version du Powershell ?
        • Powershell : creer un log simplement
      • Script Batch
        • Modification de l'hibernation
    • Common Sense
    • Infrastructure and Application
      • Citrix
        • Xendesktop
          • Check Attached User to Xendesktop Catalogs
          • Multisession Error on Connect to My PC
      • DNS
        • Add and delete DNS informations
      • WSUS
        • Re-Installer WSUS 3.0 SP2
        • WSUS : Accès à la base WSUS par Management Studio
    • Windows
  • More
    • Welcome Spelldragons
      • News
      • Scripts
        • Script Powershell
          • Powershell : Addressed a mail
          • Powershell : Uninstall Powershell 1.0
          • Powershell : List details from extended files
          • Powershell : Add a Module
          • Powershell : Check local groups and members attached to it
          • Powershell : Check Des versions Mcafee
          • Powershell : Comment connaitre la version du Powershell ?
          • Powershell : creer un log simplement
        • Script Batch
          • Modification de l'hibernation
      • Common Sense
      • Infrastructure and Application
        • Citrix
          • Xendesktop
            • Check Attached User to Xendesktop Catalogs
            • Multisession Error on Connect to My PC
        • DNS
          • Add and delete DNS informations
        • WSUS
          • Re-Installer WSUS 3.0 SP2
          • WSUS : Accès à la base WSUS par Management Studio
      • Windows

Powershell : Check local groups and members attached to it

Quelque soit le type de machine contenant un OS Windows, il est possible de lister les groupes locaux localement ou en mode remote si tous les ports sont ouverts.

En local pour lister les groupes existants :

Saisissez en local :

([ADSI]"WinNT://localhost,computer").psbase.children | where { $_.psbase.schemaClassName -eq 'group'}

La commande donnera une liste comme suit :

Pour information,

Le fait de saisir la commande ([ADSI]"WinNT://localhost,computer") permet de lister les informations contenus dans la machine en local.

Notez qu'on laisse "localhost" pour lister les infos de la machines sur laquelle on valide la commande.

Si vous voulez auditer une autre machine (en remote), il faut simplement indiquer le nom de la machine.

Si vous indiquez une adresse IPv4 alors dans la liste du "Path" vous trouverez ceci :

WinNT://WORKGROUP/192.168.1.1/Administrateurs

L'adresse  IP de votre machine ressortira.

Pour connaître les membres de chacun de ces groupes il faut saisir la commande suivante :

 (([ADSI]"WinNT://localhost").psbase.children | where { $_.psbase.schemaClassName -eq 'group'}) | % { (([ADSI]$_.psbase.Path).psbase.Invoke("Members") | foreach {$_.GetType().InvokeMember("name", 'GetProperty', $null, $_, $null) } )}

Le résultat ne sera pas trop lisibles pour vous car on ne sait pas dans quel groupe est contenu l'utilisateur.

Pour se faire, il faut s'orienter sur un script comme celui_ci que je vous détail plus bas :

--------------LocalGroup.ps1---------------

    1. # Liste des machines

  1. get-content "path\Liste_des_machines.txt"| % {

    1. # retour d'info sur la machine contenu dans le string

  2. $Computer = ($_)

    1. # mise en place de la variable $Computer indiquant le contexte de recherche

  1. $Computer = [ADSI]"WinNT://$Computer"

  2. # Mise en place de $Group pour lister les groupes

  3. $Groups = $Computer.psbase.Children | Where {$_.psbase.schemaClassName -eq "group"}

    1. # Mise en place de la boucle pour rechercher chaque info dans chaque conteneur

  1. ForEach ($Group In $Groups)

  2. {

    1. # Mise en place du groupe et son nom

  1.     "Group: " + $Group.Name

    1. # Mise en place de la recherche des membres

  1.     $Members = @($Group.psbase.Invoke("Members"))

    1. # Mise en place de la liste utilisateur et ouverture de la boucle

  1.     ForEach ($Member In $Members)

  2.     {

    1. # Mise en place de la valeur $Class pour savoir si c'est un groupe ou un utilisateur qui est placé dans le groupe

  1.         $Class = $Member.GetType().InvokeMember("Class", 'GetProperty', $Null, $Member, $Null)

    1. # Mise en place de l'affichage du nom de l'utilisateur

  1.         $Name = $Member.GetType().InvokeMember("Name", 'GetProperty', $Null, $Member, $Null)

    1. # Affichage du résultat

  1.         "-- Member: $Name ($Class)"

  2.     }

  3. }

  4. }

--------------LocalGroup.ps1---------------

Le résultat de ce script permet de lister le nom de la machine, le groupe et l'utilisateur attaché au groupe. Le tout est séparé par un ";"

Exemple du résultat :

localhost ; Administrateurs ; Administrateur ; (User)

localhost ; Administrateurs ; domain admins ; (Group)

Avec ce résultat, vous pouvez aisément le mettre en place dans un tableur pour le mettre en forme pour un quelconque audit.

Google Sites
Report abuse
Page details
Page updated
Google Sites
Report abuse