PowerShell/Active Directory

Aller à la navigation Aller à la recherche

Script de mise à jour d'Active Directory

Lire les lignes d'un fichier

Avec le fichier suivant C:\tmp\source.csv :

compte;civilité;nom;prénom;société;service
dupondp;M.;Dupond;Pierre;MaSociété;SI
martinj;M.;Martin;Jean;MaSociété;Commercial
defrattec;Mme;De Fratte;Catherine;MaSociété;Export

Premier script :

$fichier = Import-Csv "C:\tmp\source.csv" -Delimiter ";"
Foreach ($ligne in $fichier) {
    Write-Host $ligne
    }

Le résultat du premier script est :

@{compte=dupondp; nom=Dupond; prénom=Pierre; société=MaSociété; service=SI}
@{compte=martinj; nom=Martin; prénom=Jean; société=MaSociété; service=Commercial}
@{compte=defrattec; nom=De Fratte; prénom=Catherine; société=MaSociété; service=Export}

Deuxième script :

Import-Csv "C:\tmp\source.csv" -Delimiter ";" | Foreach { Write-Host ("{0} {1} appartient au service {2}" -f $_.civilité, $_.nom, $_.service) }

Le résultat du deuxième script est :

M. Dupond appartient au service SI
M. Martin appartient au service Commercial
Mme De Fratte appartient au service Export

Mise à jour d'utilisateur AD

site : https://www.thelazyadministrator.com

 Import-CSV -Path C:\Test\TestFile.CSV | Foreach-Object { 
   $ldaphash = @{
        "employeeType"                  = $_.employeeType;
        "departmentnumber"              = $_.departmentNumber;
        "msDS-cloudExtensionAttribute1" = $_."msDS-cloudExtensionAttribute1";
        "msDS-cloudExtensionAttribute2" = $_."msDS-cloudExtensionAttribute2";
        "msDS-cloudExtensionAttribute3" = $_."msDS-cloudExtensionAttribute3";
        "msDS-cloudExtensionAttribute4" = $_."msDS-cloudExtensionAttribute4"
    }
    #Get all keys that have null values and store in variable keystoremove 
    $keysToRemoveldap = $ldaphash.keys | Where-Object { 
        !$ldaphash[$_] 
    }
    #Foreach key, remove them from the hashtable 
    $keysToRemoveldap | Foreach-Object { 
        $ldaphash.remove($_) 
    }
   $hashtable = @{
        Identity        = Get-ADuser -Filter "name -eq '$($_.name)'" -Properties *
        SAMAccountName  = $_.SAMAccountName;
        EmailAddress    = $_.EmailAddress;
        DisplayName     = $_.DisplayName;
        GivenName       = $_.GivenName;
        Surname         = $_.Surname;
        Office          = $_.physicalDeliveryOfficeName;
        EmployeeID      = $_.EmployeeID;
        Title           = $_.title;
        Company         = $_.Company;
        Division        = $_.Division;
        Department      = $_.Department;
        MobilePhone     = $_.mobile;
        StreetAddress   = $_.streetAddress;
        City            = $_.City;
        State           = $_.State;
        PostalCode      = $_.postalCode;
        Country         = $_.Country;
        OfficePhone     = $_.telephoneNumber;
        ErrorAction     = "Stop";
        Replace         = $ldaphash
   }
   $keysToRemove = $hashtable.keys | Where-Object { 
        !$hashtable[$_] 
   }
   $keysToRemove | Foreach-Object { 
        $hashtable.remove($_) 
   }
   #If there are no LDAP properties to change, remove it from the main hash table 
   if ($ldaphash.count -eq 0)
   {
       $hashtable.remove("Replace")
   }
   Set-ADUser @hashtable
}

PowerShell and Active Directory Essentials

Vidéo Youtube, Varonis, PowerShell and Active Directory Essentials

Compte local

Contrôle

# contrôle de l'existance d'un compte local
$compte="recupe";if($compte -in ((Get-LocalUser).name)){Write-Host "Le compte $compte existe" -ForegroundColor Green} else {Write-Host "Le compte $compte n'existe pas" -ForegroundColor Yellow}

Voir aussi

  •