sIDHistory

Pour les besoins d’un projet, j’ai besoin de récupérer la liste des SIDs dans le champs sIDHistory de tous les utilisateur Active Directory.

Ceci sans utiliser les dernières cmdlets Active Directory disponibles depuis Windows 2008.

Alors comme on dit, on va faire de l’ADSI old school.

Un SID en très court:

Un Security Identifier (SID) est un chiffre complexe qui permet à un Security Principal (utilisateur, ordinateur, groupe) d’être identifié. Cet identifiant est placé dans les Access Control List (ACL) et reçoit des droits d’accès.

Par exemple on peut donner un droit de lecture d’un fichier à un utilisateur. Windows pour ça va créer un Access Control Entry (ACE), contenant le SID de l’utilisateur ainsi que le droit, Read, et va placer cet ACE dans l’ACL du fichier. Powershell a d’ailleurs d’excellentes cmdlets pour traiter tout ça: Get-Acl et Set-Acl.

Lors des migrations d’utilisateurs entre domaines ou entre forêts Active Directory, il est nécessaire de se rappeler l’identifiant utilisé dans la forêt d’origine, ceci car en migrant, l’utilisateur recevra un nouvel identifiant, mais tous les fichiers sur les serveurs sont protégés en utilisant l’ancien SID.

Du coup lorsqu’on migre des utilisateurs d’un domaine vers un autre, souvent on garde l’ancien SID dans le champs sIDHistory.

J’ai créé une cmdlet, Get-sIDHistory, qui permet de récupérer les SIDs dans la sIDHistory et sauvegarde le résultat dans un fichier CSV.

voici le Get-Help de la cmdlet:

Seuls le Domaine et le Path sont des paramètres obligatoires, le premier pour indiquer le domaine à scanner, et le deuxième pour définir le nom du fichier CSV à générer.

Le Serveur est optionnel et permet de cibler un DC en particulier.

Append est utilisé pour ne pas écraser le fichier CSV si on exécute cette cmdlet en boucle sur plusieurs domaines.

Et voici le code:

Partager ce contenu