====== 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
}