meta données pour cette page
Création nouvel utilisateur via .csv
Nous créons un script permettant de créer de nouveaux utilisateurs avec un dossier partagé personnel dans notre environnement Active directory depuis un fichier CSV :
<# Auteur : Degnace Karl Date : 20/01/2023 Description : script de création d’utilisateurs dans l’AD et du dossier partagé personnel à partir d'un fichier .txt ou excel Version: 1.1 Revisions : -1.1 Rectification de la lettre du lecteur -1.0 creation du script #> # Renseignez le chemin du fichier de données necessaire à la creation des nouveaux utilisateurs $CSV = Read-Host "Veuillez entrer le chemin du fichier que vous souhaitez executer " $Collection = Import-CSV -Path $CSV -Delimiter ";" -Encoding UTF8 Write-Output $Collection #La boucle suivante traite automatiquement ligne par ligne chaque élément du fichier CSV de la collection. Ces données sont chargées dans des variables. Foreach($Utilisateur in $Collection) { $UPrenom = $Utilisateur.Prenom $UNom = $Utilisateur.Nom $UDepartment = $Utilisateur.Service $UTitle = $Utilisateur.Fonction $ULogin = $Utilisateur.Login $UMail = $Utilisateur.Mail #Creation d'une hashtable contenant nos valeurs d'attribut des utilisateurs à partir des variables. $NewUser = @{ Name = "$UPrenom $UNom" DisplayName = "$UPrenom $UNom" GivenName = $UPrenom Surname = $UNom SamAccountName = $ULogin UserPrincipalName = "$ULogin@axeplane.loc" EmailAddress = $Umail Path = "OU=Ut_$UDepartment,OU=Personnel,DC=axeplane,DC=loc" AccountPassword = (ConvertTo-SecureString "Motpasse_2022" -AsPlainText -Force) ChangePasswordAtLogon = $true Enabled = $true OtherAttributes = @{'Title' = $UTitle ;'department' = $UDepartment} } # Vérification de l'absence de l'utilisateur dans l'AD puis creation de l'utilisateur et de son dossier partagé et intégration dans un groupe. # Un message de confirmation de création d'utilisateur est affiché if (Get-ADUser -Filter {SamAccountName -eq $ULogin}) { Write-Warning "L'identifiant $ULogin existe déjà dans l'AD" } else { New-ADUser @NewUser New-Item -ItemType Directory -Path "P:\Partages_Personnels_Utilisateurs\$ULogin" New-SmbShare -Name Partage_$ULogin$ -Path "P:\Partages_Personnels_Utilisateurs\$ULogin" -ChangeAccess $ULogin Add-NTFSAccess -Path "P:\Partages_Personnels_Utilisateurs\$ULogin" -Account "$ULogin" -AccessRights Modify #Add-NTFSAccess -Path "P:\Partages_Personnels_Utilisateurs\$ULogin" -Acadministrateur" -AccessRights Modify Get-Item "P:\Partages_Personnels_Utilisateurs\$ULogin" | Disable-NTFSAccessInheritance Set-ADUser -Identity $ULogin -HomeDirectory \\SRVAXPLN\Partage_$ULogin$ -HomeDrive Z: Add-AdGroupMember -Identity GG_$UDepartment -Members $ULogin Write-Output "Succès de la création de l'utilisateur : $UPrenom $UNom" } }
Lister membres groupe de sécurité
Voici un script interactif listant les membres d’un groupe de sécurité et permettant l'export du résultat dans un fichier texte :
<# Auteur : Degnace Karl Date : 20/01/2023 Description : script permettant d’afficher/d’exporter la liste des membres d’un groupe AD Version: 1.0 #> #Install-Module -Name ImportExcel # Affiche la liste des groupe de securité de l'AD Write-Output $table=(Get-ADGroup -filter 'Name -like "GG*" -or Name -like "GDL*"'| format-table -property name) $tableau=@() $lgroup=(Get-ADGroup -filter 'Name -like "GG*" -or Name -like "GDL*"' | Select name) $Date = (Get-Date -Format "ddMMyy_HHmm") foreach($lg in $lgroup) {$tableau+=$lg.name} # Demande d'entrer le nom du groupe que l'on souhaite connaitre les membres Do {$Groupe = Read-Host "Veuillez entrer le groupe dont vous souhaitez connaitre les membres (respectez la casse) "} until ( $tableau -contains $Groupe) Write-Output(Get-ADGroupMember -Identity $Groupe | Select Name, SamAccountName) # Demande si l'on veut exporter la liste générée en fichier .txt Do {$Reponse = Read-Host "Voulez-vous exporter cette liste ci-dessus dans un fichier txt (oui ou non) "} Until (($Reponse -eq "oui") -or ($Reponse -eq "non")) if ($Reponse -eq "oui") { Get-ADGroupMember -Identity $Groupe | Select Name, SamAccountName | Export-Csv -path C:\Users\Administrateur\Documents\Export\$($Groupe)_ListMembre_$($Date).txt -NoTypeInformation Write-Output "La liste des membres du groupe $Groupe est exportée dans le fichier C:\Users\Administrateur\Documents\Export\$($Groupe)_ListMembre_$($Date).txt" } # Demande si l'on veut exporter la liste générée en fichier .xlsx Do {$Reponse = Read-Host "Voulez-vous exporter cette liste ci-dessus dans un fichier excel (oui ou non) "} Until (($Reponse -eq "oui") -or ($Reponse -eq "non")) if ($Reponse -eq "oui") { Get-ADGroupMember -Identity $Groupe| Select-Object Name, SamAccountName | Export-Excel -Path C:\Users\Administrateur\Documents\Export\$($Groupe)_ListMembre_$($Date).xlsx Write-Output "La liste des membres du groupe $Groupe est exportée dans le fichier C:\Users\Administrateur\Documents\Export\$($Groupe)_ListMembre_$($Date).xlsx" }
Lister les groupes d'un utilisateur
Nous créons un script interactif listant les groupes d'appartenance d’un utilisateur d'un active directory et permettant l'export du résultat dans un fichier texte :
<# Auteur : Degnace Karl Date : 20/01/2023 Description : script permettant d’afficher/d’exporter la liste des groupes AD d’un utilisateur Version: 1.0 #> #Install-Module -Name ImportExcel # Affiche la liste des utilisateurs de l'AD $Luser=@() $Lutilisateur=(Get-ADUser -filter * | Select SamAccountName) $Date = (Get-Date -Format "ddMMyy_HHmm") foreach($User in $Lutilisateur) {$Luser+=$User.SamAccountName} Write-Output $Luser # Demande d'enrtrer le login de l'utilisatateur dont l'on souhaite connaitre les groupes d'attachements Do {$Utilisateur = Read-Host "Veuillez entrer le login de l'utilisateur dont vous souhaitez connaitre ses groupes d'attachements (respectez la casse) "} until ( $Luser -contains $Utilisateur) Write-Output(Get-ADPrincipalGroupMembership -Identity $Utilisateur | Select Name, DistinguishedName) # Demande si l'on veut exporter la liste générée en fichier .txt Do {$Reponse = Read-Host "Voulez-vous exporter cette liste ci-dessus dans un fichier texte (oui ou non) "} Until (($Reponse -eq "oui") -or ($Reponse -eq "non")) if ($Reponse -eq "oui") { Get-ADPrincipalGroupMembership -Identity $Utilisateur | Select Name | Export-Csv -path C:\Users\Administrateur\Documents\Export\$($Utilisateur)_Group_List_$($Date).txt -NoTypeInformation Write-Output "La liste des groupes de l'utilisateur $Utilisateur est exportée dans le fichier C:\Users\Administrateur\Documents\Export\$($Utilisateur)_Group_List_$($Date).txt" } # Demande si l'on veut exporter la liste générée en fichier .xlsx Do {$Reponse = Read-Host "Voulez-vous exporter cette liste ci-dessus dans un fichier excel (oui ou non) "} Until (($Reponse -eq "oui") -or ($Reponse -eq "non")) if ($Reponse -eq "oui") { Get-ADPrincipalGroupMembership -Identity $Utilisateur| Select-Object Name |Export-Excel -Path C:\Users\Administrateur\Documents\Export\$($Utilisateur)_Group_List_$($Date).xlsx Write-Output "La liste des groupes de l'utilisateur $Utilisateur est exportée dans le fichier C:\Users\Administrateur\Documents\Export\$($Utilisateur)_Group_List_$($Date).xlsx" }
Sauvegarde dossier utilisateur sur serveur
Nous créons un script planifiant une sauvegarde quotidienne de nuit des données utilisateurs situées sur les postes de travail :
<# Auteur : Degnace Karl Date : 20/01/2023 Description : script de sauvegarde des données utilisateurs dans le dossier de sauvegarde du serveur Version: 1.0 #> #declaration des variables #ouverture d'un prompt administrateur $Utilisateur = "administrateur" $MDP = ConvertTo-SecureString "axeplanE_2000" -AsPlainText -Force $Credential = New-Object -Typename System.Management.Automation.PSCredential -argumentlist ($Utilisateur, $MDP) $ListPc = Get-ADComputer -filter {Name -like 'PC*'} $Date = (Get-Date -Format "ddMMyy_HHmm") #boucle sur les Pc de l' Active Directory avec un fichier log et ouverture d'une session administrateur sur le pc distant foreach($Pc in $ListPc) { Start-Transcript -Path "P:\Sauvegardes\Log_Sauvegardes\$($Pc.Name)_$($Date)_log.txt" Try { $Session = New-PSSession -ComputerName $Pc.Name -Credential $Credential # Copie du dossier users du poste client sur le dossier de sauvegarde du serveur avec message en cas d'erreur. Copy-Item "C:\Users" -Destination "P:\Sauvegardes\$($Pc.Name)_$($Date)" -FromSession $Session -Recurse } catch { Write-Output "Une erreur s'est produite pour l'ordinateur $($Pc.Name). Pour plus d'informations, consultez le fichier texte P:\Sauvegardes\Log_Sauvegardes\$($Pc.Name)_$($Date)_log.txt" } finally { Stop-Computer -ComputerName $Pc.Name -force } Stop-Transcript }