#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/)