#type/kb #theme/it/security #theme/IT/MS/Windows # KB-WIN : Lister les SID en ligne de commande Dans ce tutoriel, vous allez apprendre à lister le SID des utilisateurs locaux de Windows, ou AD, à l'aide de différentes commandes telles que `whoami`, `Get-WmiObject`, `Get-CimInstance`, `Get-LocalUser` et `Get-ADUser`. ## Qu’est-ce qu’un SID ? Sous Windows, le **SID** pour ***S**ecurity **ID**entifier* ou **identificateur de sécurité** en français, est **une chaîne unique** pour identifier un objet de sécurité, notamment un **utilisateur** ou un **groupe** sur une **machine Windows** ou dans un **annuaire Active Directory**. > [!info] À savoir !<span style="font-weight: normal; color: var(--text-normal)"> Les SID sont utilisés pour définir les autorisations des autilisateurs et leur appartenance aux groupes</span> ## Sommaire - [[#Commande de base whoami]] - Commandes PowerShell : - [[#PowerShell Lister les SID des comptes locaux]] - [[#PowerShell Lister les SID des comptes distants]] - [[#PowerShell Lister les SID des comptes AD]] # Commande de base : whoami La commande `whoami` est la méthode la plus simple et la plus rapide d'obtenir le **SID du compte actuellement connecté sur l'ordinateur**. Lancer l'invite de commandes Windows et saisir la commande suivante : ``` whoami /user ``` Le SID de l'utilisateur actuel sera affiché : ![[_img-kb-psh-Lister-les-SID-4.png]] # PowerShell : Lister les SID des comptes locaux ## Commande Get-LocalUser PowerShell intègre un ensemble de commandes pour [gérer les utilisateurs et groupes locaux de Windows](https://www.it-connect.fr/comment-gerer-les-utilisateurs-et-groupes-locaux-avec-powershell/), dont **Get-LocalUser** qui retourne la propriété SID : ``` Get-LocalUser | Select-Object Name, SID ``` Nous obtenons bien la liste : ![[_img-kb-psh-Lister-les-SID-3.png]] Pour cibler un utilisateur local spécifique : ``` Get-LocalUser -Name "Fabien" | Select-Object Name, SID ``` > [!info] À savoir !<span style="font-weight: normal; color: var(--text-normal)"> La commande `Get-LocalUser` permet de lister les compte AD lorsqu'elle est exécutée sur un contrôleur de domaine.</span> ## Commande Get-WmiObject Cette commande interroge les **classes WMI** (***W**indows **M**anagement **I**nstrumentation*) de Windows avec la commande `Get-WmiObject` de PowerShell. ``` Get-WmiObject -Class win32_UserAccount | Format-Table Name,SID ``` Cette commande retourne la liste des utilisateurs locaux avec leur SID respectif : ![[_img-kb-psh-Lister-les-SID.png]] Pour récupérer directement le SID d'un utilisateur local spécifique, nous pouvons utiliser cette syntaxe en appliquant un filtre sur le nom d'utilisateur (par exemple "Fabien") : ``` (Get-WmiObject -Class win32_UserAccount -Filter "name='Fabien'").SID ``` ![[_img-kb-psh-Lister-les-SID-2.png]] ## Commande Get-CimInstance La commande `Get-CimInstance` de PowerShell s'appuie sur **WinRM**, le protocole de gestion à distance de Windows avec de PowerShell. Elle s'utilise de la façon suivante : ``` Get-CimInstance -Class win32_UserAccount | Format-Table Name,SID ``` Cette commande retourne la liste des utilisateurs locaux avec leur SID respectif : ![[_img-kb-psh-Lister-les-SID-1.png]] Pour récupérer directement le SID d'un utilisateur local spécifique, nous pouvons utiliser cette syntaxe en appliquant un filtre sur le nom d'utilisateur (par exemple "Fabien") : ``` (Get-CimInstance -Class win32_UserAccount -Filter "name='Fabien'").SID ``` ![[_img-kb-psh-Lister-les-SID-5.png]] # PowerShell : Lister les SID des comptes distants Les cmldets PowerShell `CimInstance ` et `Get-WmiObject` prennent en charge le paramètre `-ComputerName`, ce qui permet d'**interroger une machine à distance** à condition que les flux soient autorisés dans le pare-feu Windows. Pour récupérer les informations avec `Get-CimInstance` sur une autre machine en spécifiant son nom (exemple avec PC-01) : ``` Get-CimInstance -Class win32_UserAccount -ComputerName PC-01 | Format-Table Name,SID ``` Pour récupérer les informations avec `Get-WmiObject` sur une autre machine en spécifiant son nom (exemple avec PC-01) : ``` Get-WmiObject -Class win32_UserAccount -ComputerName PC-01 | Format-Table Name,SID ``` # PowerShell : Lister les SID des comptes AD Bien que la commande `Get-LocalUser` permette de récupérer les SID des comptes sur un contrôleur de domaine Active Directory, la commande `Get-ADUser` donne accès à l'ensemble des propriétés des objets Active Directory appartenant à la classe *user*. Utiliser la commande suivante : ``` Get-ADUser -Filter * | Select-Object Name, SID ``` Bien sûr, vous pouvez cibler un utilisateur spécifique en précisant son identifiant (par exemple "jean.neymar") : ``` Get-ADUser -Identity "jean.neymar" | Select-Object Name, SID ``` > [!info] À savoir !<span style="font-weight: normal; color: var(--text-normal)"> Vous pouvez également obtenir ces informations pour les **groupes** et les **ordinateurs** avec ces deux commandes : `Get-ADGroup` et `Get-ADComputer`.</span> # Conclusion Vous êtes à présent en mesure de récupérer les SID des objets locaux, distants ou AD. Pour aller plus loins voici quelques articles de référence ci-dessous. ## Références Voici les articles IT-CONNECT utilisés pour créer ce tutoriel : - [Découvrir les SID sous Windows](https://www.it-connect.fr/a-la-decouverte-des-sid-sous-windows/) - [Comment utiliser PowerShell pour obtenir les SID des utilisateurs Windows ?](https://www.it-connect.fr/comment-utiliser-powershell-pour-obtenir-les-sid-des-utilisateurs/) - [Comment gérer les utilisateurs et groupes locaux de Windows avec PowerShell ?](https://www.it-connect.fr/comment-gerer-les-utilisateurs-et-groupes-locaux-avec-powershell/)