Actions simples

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Domaine Administration Active Directory
Module ActiveDirectory
Objet Recettes de gestion des comptes, groupes et ordinateurs
Voir aussi Get-ADUser · Get-credential

Recueil de recettes PowerShell courantes pour l'administration Active Directory (module ActiveDirectory). Les noms de domaine et de comptes utilisés ci-dessous sont fictifs (domaine de démonstration Globomantics.local).

Réinitialiser le mot de passe d'un utilisateur

$new = Read-Host "Enter the new password" -AsSecureString
Set-ADAccountPassword UserName -NewPassword $new

Set-ADAccountPassword UserName -NewPassword (ConvertTo-SecureString -AsPlainText -String "P@ssword" -Force)

# Forcer le changement de mot de passe à la prochaine ouverture de session
Set-ADUser UserName -ChangePasswordAtLogon $True

Désactiver / réactiver un compte

# Mode simulation (-WhatIf)
Disable-ADAccount Stef -WhatIf
# What if: Performing operation "Set" on Target
# "CN=Jack Frost,OU=staff,OU=Testing,DC=GLOBOMANTICS,DC=local".

# Exécution
Disable-ADAccount Stef

# Désactivation en masse
Get-ADUser -Filter "department -eq 'sales'" | Disable-ADAccount

Débloquer un compte

Unlock-ADAccount Stef

Supprimer un compte

# Mode simulation
Remove-ADUser stef -WhatIf
Get-ADUser -Filter "enabled -eq 'false'"

# Supprimer les comptes désactivés inchangés depuis plus de 180 jours
Get-ADUser -Filter "enabled -eq 'false'" -Property WhenChanged -SearchBase "OU=Employees,DC=Globomantics,DC=Local" |
    Where-Object { $_.WhenChanged -le (Get-Date).AddDays(-180) } | Remove-ADUser -WhatIf

Rechercher des groupes vides

Get-ADGroup -Filter * | Where-Object { -Not ($_ | Get-ADGroupMember) } | Select Name

Get-ADGroup -Filter "members -notlike '*' -AND GroupScope -eq 'Universal'" `
    -SearchBase "OU=Groups,OU=Employees,DC=Globomantics,DC=local" | Select Name,Group*

Ajouter un membre dans un groupe

Add-ADGroupMember "Chicago IT" -Members Stef
Add-ADGroupMember "Chicago Employees" -Member (Get-ADUser -Filter "city -eq 'Chicago'")
Get-ADUser -Filter "city -eq 'Chicago'" | ForEach-Object { Add-ADGroupMember "Chicago Employees" -Member $_ }

Énumérer les membres d'un groupe

Get-ADGroupMember "Domain Admins"
Get-ADGroupMember "Chicago All Users" -Recursive | Select DistinguishedName

Get-ADUser jfrost -Property MemberOf | Select -ExpandProperty MemberOf

Trouver un compte ordinateur obsolète

Get-ADComputer -Filter "Passwordlastset -lt '1/1/2012'" -Properties * | Select name,passwordlastset

Get-ADComputer -Filter "LastlogonTimestamp -gt 0" -Properties * |
    Select name,lastlogontimestamp,
        @{Name="LastLogon";Expression={[datetime]::FromFileTime($_.Lastlogontimestamp)}},passwordlastset |
    Sort LastLogonTimeStamp

# Pour créer un filtre sur date, la convertir en FileTime
$cutoff = (Get-Date "1/1/2012").ToFileTime()
Get-ADComputer -Filter "(lastlogontimestamp -lt $cutoff) -or (lastlogontimestamp -notlike '*')" -Property * |
    Select Name,LastlogonTimestamp,PasswordLastSet

Désactiver un compte ordinateur

Disable-ADAccount -Identity "chi-srv01$" -WhatIf
Get-ADComputer "chi-srv01" | Disable-ADAccount
Get-ADComputer -Filter "Passwordlastset -lt '1/1/2012'" -Properties * | Disable-ADAccount

Retrouver des ordinateurs

Get-ADComputer -Filter * -Properties OperatingSystem |
    Select OperatingSystem -Unique | Sort OperatingSystem

Get-ADComputer -Filter "OperatingSystem -like '*Server*'" `
    -Properties OperatingSystem,OperatingSystemServicePack | Select Name,Op* | Format-List

Rapport d'ancienneté des mots de passe

Get-ADUser -Filter "Enabled -eq 'True' -AND PasswordNeverExpires -eq 'False'" `
    -Properties PasswordLastSet,PasswordNeverExpires,PasswordExpired |
    Select DistinguishedName,Name,pass*,
        @{Name="PasswordAge"; Expression={(Get-Date)-$_.PasswordLastSet}} |
    Sort PasswordAge -Descending |
    ConvertTo-Html -Title "Password Age Report" | Out-File c:\Work\pwage.htm

Voir aussi