Trucs & Astuces

Powershell

Powershell: Active Directory

Powershell: Active Directory

Par ronan , 28 janvier, 2025

Quelques commandes utiles permettant d'interroger un annuaire Active Directory

Dans un premier temps, importer le module

PS > Import-Module ActiveDirectory

Exporter les utilisateurs (uniquement les actifs)

PS > Get-ADUser -Properties * -Filter { enabled -eq "True" }

Exporter les ordinateurs (seulement les propriétés indiquées)

PS > Get-ADComputer -Properties Name,OperatingSystem,LastLogonDate,ms-Mcs-AdmPwd,description,ipv4address -Filter *

Rechercher un utilisateur en particulier

PS > Get-ADUser uguilbert -Properties *

Idem pour un ordinateur

PS > Get-ADComputer L67BE4619ZGJR3V4V -Properties *

Si une authentification spécifique est nécessaire

Tout d'abord, créer un mot de passe sécurisé - Tout est expliqué ici

Exemple d'un script utilisant un user et un mot de passe spécifique pour interroger l'AD

$key = Get-Content -Path ".mykey" -Encoding Byte
$user = "gillesdidier"
$password = "76492d1116743f0423413b16050a5345MgB8AGMAZABXAHgAOQBWAHoAcgBXADUAcABJAEkAQQBVAGIAMQA1AGsAYgBuAHcAPQA9AHwAMAAxADcANABjADgAMQAwADMAOQBhADIAZQBkAGIAZAA3ADQAYgA2AGQAMQBhADEAZgAxADkAMwBjADEAOQA4ADUANABjADUANgBmAGUAMgA2ADMAMwAxADEAYQAwAGIAYwBkADUAOAAwADMAZAA4AGEAOQBhADcANQA4ADUAMQBiAGIAOQA2ADkANABiADAAMAA4ADgAMgA2AGEANgAyADAAZgBjADkAOQAwAGEAMQAyADcAZQA2AGEAMgBjAGUA" | ConvertTo-SecureString -Key $key
$creds = New-Object System.Management.Automation.PSCredential($user,$password)
Import-Module ActiveDirectory
Get-ADUser -Credential $creds -Properties * -Filter { enabled -eq "True" }

La variable $key contient le contenu du fichier .mykey

La variable $password est égale au mot de passe sécurisé grâce à la clé .mykey 

Etiquettes

Powershell: Sécuriser un mot de passe

Powershell: Sécuriser un mot de passe

Par ronan , 28 janvier, 2025

Pour sécuriser un mot de passe afin de l'utiliser dans des scripts Powershell, exécuter les étapes suivantes

Générer la clé avec des données aléatoires

PS > $key = (1..32 | ForEach-Object { Get-Random -Minimum 0 -Maximum 256 }) -as [byte[]]

Sauvegarder la clé dans un fichier caché qui devra être accessible par les scripts concernés

PS > [System.IO.File]::WriteAllBytes(".mykey", $Key)

Bien évidement, cette clé devra rester secrète

PS > Get-Content .mykey
¥l{}ƒ)’´Yrz’¸¯>°'ÈH'­y¼ò/Àp↕Ž

Si la clé existe déjà, on initialise la variable $key de cette façon là

PS > $key = Get-Content .key -Encoding Byte

Première étape de sécurisation du mot de passe

PS > $monmotdepasse = "ceciestmonmotdepasse" | ConvertTo-SecureString -AsPlainText -Force
PS > $monmotdepasse
System.Security.SecureString

Une autre possibilité, en utilisant Get-Credential, permet de ne pas saisir son mot de passe dans la console PowerShell
Le résultat obtenu est une SecureString

PS > $monmotdepasse = Get-Credential

cmdlet Get-Credential at command pipeline position 1
Supply values for the following parameters:
Credential

Une fenêtre Windows s'ouvre permettant de saisir ses identifiants

PS > $monmotdepasse.Password
System.Security.SecureString

Seconde étape de sécurisation du mot de passe

PS > $monmotdepassesecurise = $monmotdepasse | ConvertFrom-SecureString -Key $key
PS > $monmotdepassesecurise
76492d1116743f0423413b16050a5345MgB8AGMAZABXAHgAOQBWAHoAcgBXADUAcABJAEkAQQBVAGIAMQA1AGsAYgBuAHcAPQA9AHwAMAAxADcANABjADgAMQAwADMAOQBhADIAZQBkAGIAZAA3ADQAYgA2AGQAMQBhADEAZgAxADkAMwBjADEAOQA4ADUANABjADUANgBmAGUAMgA2ADMAMwAxADEAYQAwAGIAYwBkADUAOAAwADMAZAA4AGEAOQBhADcANQA4ADUAMQBiAGIAOQA2ADkANABiADAAMAA4ADgAMgA2AGEANgAyADAAZgBjADkAOQAwAGEAMQAyADcAZQA2AGEAMgBjAGUA

Si la variable $monmotdepasse a été initialisée via la commande Get-Credential, la variable $monmotdepassesecurise sera initialisée de cette manière

PS > $monmotdepassesecurise = $monmotdepasse.Password | ConvertFrom-SecureString -Key $key

Cette chaine de caractères devra être copiée/collée dans tous les scripts Powershell concernés.

Etiquettes