CADRE:
Cet article vise un public débutant en powershell ne connaissant pas bien l’utilisation des classes objets avec powershell.
INTRODUCTION:
Dans cet article nous allons expliquer comment Traduire le SID lié à un utilisateur active directory ou local ou encore l’inverse.
Il faut savoir que Powershell est fondé sur la programmation objet.
Nous avons besoin d’installer aussi Net Framework 4.5, pour avoir les classes d’objets suivant sous powershell:
1- System.Security.Principal.SecurityIdentifier (SID)
2- System.Security.Principal.NTAccount (compte NT)
SCRIPT:
Traduire le l’utilisateur en SID:
1- Création de l’objet de la classe System.Security.Principal.NTAccount qui permet de représenter un utilisateur ou un groupe dans une variable $objUser .
$objUser = New-Object System.Security.Principal.NTAccount("administrator")
2- Traduction de l’objet de la classe System.Security.Principal.NTAccount qui représente un utilisateur ou un groupe en classe System.Security.Principal.SecurityIdentifier qui représente le SID à savoir que .translate() après le $objUser est la méthode qui permet la traduction mais c’est la classe de l’objet contenue dans () sur lequel s’appuie la traduction (en quoi on veut le traduire) sans cela aucune traduction n’est possible .
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
2- Traduction de l’objet étant effectué et mise dans une variable $strSID nous avons plus qu’à regarder la valeur de la variable en tapant .value après $strSID
$strSID .Value
affiche: S-1-5-21-29
Traduire le SID en Nom d’utilisateur:
Nous avons vu comment traduire l’utilisateur en SID l’inverse est tout simplement d’inverser les classes d’objets avec les noms des variables correspondant.
$objSID = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-32-546")
$objUser = $objSID.Translate([System.Security.Principal.NTAccount])
$objUser.Value
affiche: BUILTIN\Invités