Modifier valeurs dans un fichier csv pendant l'éxécution d'un script Powershell
Utilisateur anonyme
-
peperonie06 Messages postés 236 Date d'inscription Statut Membre Dernière intervention -
peperonie06 Messages postés 236 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis entrain de rédiger un script Powershell afin de créer et générer des OU / Utilisateurs pour un ADDS.
Je rencontre un problème, les données se modifie bien, mais après le script a finit de s'éxécuter ...
J'aimerai remédier à ce problème "bloquant" pour pouvoir continuer mon dev.
Je vous remercie par avance de votre aide qui me sera précieuse je pense.
<
Je suis entrain de rédiger un script Powershell afin de créer et générer des OU / Utilisateurs pour un ADDS.
Je rencontre un problème, les données se modifie bien, mais après le script a finit de s'éxécuter ...
J'aimerai remédier à ce problème "bloquant" pour pouvoir continuer mon dev.
Je vous remercie par avance de votre aide qui me sera précieuse je pense.
<
###################################################### # CREATE AND POPULATE YOUR ADDS # # **A script by brlndtech ** # # github : https://github.com/brlndtech # # Please RTFM README.md # ###################################################### Import-Module ActiveDirectory Import-Module 'Microsoft.PowerShell.Security' $users = Import-Csv -Delimiter ";" -Path "users-random.csv" $netbios=Read-Host "Entrez le NetBIOS de votre domaine (ex : entreprise) " $domain=Read-Host "Entrez votre .tld (ex : .com) " $site1=Read-Host "Entrez le nom de votre premier site " $site2=Read-Host "Entrez le nom de votre deuxième site " $site3=Read-Host "Entrez le nom de votre troisième site " # c'est ici que je rencontre un problème, les données se modifie bien, mais après le script a finit de # s'éxécuter ... $content = Get-Content ".\users-random.csv" | foreach { $_ -replace "Paris","ville1" } Set-Content -Path ".\users-random.csv" -Value $content $content = Get-Content ".\users-random.csv" | foreach { $_ -replace "Lyon","ville2" } Set-Content -Path ".\users-random.csv" -Value $content $content = Get-Content ".\users-random.csv" | foreach { $_ -replace "Marseille","ville3" } Set-Content -Path ".\users-random.csv" -Value $content # c'est ici que je rencontre un problème, les données se modifie bien, mais après le script a finit de # s'éxécuter ... New-ADOrganizationalUnit -Name "Sites" -Path "dc=$netbios,dc=$domain" New-ADOrganizationalUnit -Name "$site1" -Path "ou=Sites,dc=$netbios,dc=$domain" New-ADOrganizationalUnit -Name "Services" -Path "ou=$site1,ou=Sites,dc=$netbios,dc=$domain" New-ADOrganizationalUnit -Name "Info" -Path "ou=Services,ou=$site1,ou=Sites,dc=$netbios,dc=$domain" New-ADOrganizationalUnit -Name "Compta" -Path "ou=Services,ou=$site1,ou=Sites,dc=$netbios,dc=$domain" New-ADOrganizationalUnit -Name "$site2" -Path "ou=Sites,dc=$netbios,dc=$domain" New-ADOrganizationalUnit -Name "Services" -Path "ou=$site2,ou=Sites,dc=$netbios,dc=$domain" New-ADOrganizationalUnit -Name "Info" -Path "ou=Services,ou=$site2,ou=Sites,dc=$netbios,dc=$domain" New-ADOrganizationalUnit -Name "Compta" -Path "ou=Services,ou=$site2,ou=Sites,dc=$netbios,dc=$domain" New-ADOrganizationalUnit -Name "$site3" -Path "ou=Sites,dc=$netbios,dc=$domain" New-ADOrganizationalUnit -Name "Services" -Path "ou=$site3,ou=Sites,dc=$netbios,dc=$domain" New-ADOrganizationalUnit -Name "Info" -Path "ou=Services,ou=$site3,ou=Sites,dc=$netbios,dc=$domain" New-ADOrganizationalUnit -Name "Compta" -Path "ou=Services,ou=$site3,ou=Sites,dc=$netbios,dc=$domain" #*******Ajout de chaque utilisateur dans son OU spécifique******* foreach ($user in $users) { $name = $user.firstName + " " + $user.lastName $fname = $user.firstName $lname = $user.lastName $login = $user.firstName + "." + $user.lastName $Uoffice = $user.office $Upassword = $user.password $dept = $user.department If ($user.office -eq "$site1") { switch($user.department) { "Info" {$office = "OU=Info,OU=Services,OU=$site1,OU=Sites,DC=$netbios,DC=$domain"} # à modifier, pour adpater à sa sauce "Compta" {$office = "OU=Compta,OU=Services,OU=$site1,OU=Sites,DC=$netbios,DC=$domain"} # à modifier, pour adpater à sa sauce } } ElseIf ($user.office -eq "$site2") { switch($user.department) { "Info" {$office = "OU=Info,OU=Services,OU=$site2,OU=Sites,DC=$netbios,DC=$domain"} # à modifier, pour adpater à sa sauce "Compta" {$office = "OU=Compta,OU=Services,OU=$site2,OU=Sites,DC=$netbios,DC=$domain"} # à modifier, pour adpater à sa sauce } } ElseIf ($user.office -eq "$site3") { switch($user.department) { "Info" {$office = "OU=Info,OU=Services,OU=$site3,OU=Sites,DC=$netbios,DC=$domain"} # à modifier, pour adpater à sa sauce "Compta" {$office = "OU=Compta,OU=Services,OU=$site3,OU=Sites,DC=$netbios,DC=$domain"} # à modifier, pour adpater à sa sauce } } try { New-ADUser -Name $name -SamAccountName $login -UserPrincipalName $login -DisplayName $name -GivenName $fname -Surname $lname -AccountPassword (ConvertTo-SecureString $Upassword -AsPlainText -Force) -City $Uoffice -Path $office -Department $dept -Enabled $true echo "Utilisateur ajouté : $name" } catch{ echo "-Utilisateur non ajouté : $name" } } #*********************Groupes Root************************ New-ADGroup -Name G_Info_InterSite -GroupScope Global -GroupCategory Security -Path "ou=Sites,dc=coud,dc=local" New-ADGroup -Name G_Compta_InterSite -GroupScope Global -GroupCategory Security -Path "ou=Sites,dc=coud,dc=local" #*********************Groupes sous $site2************************ New-ADGroup -Name G_Info_$site2 -GroupScope Global -GroupCategory Security -Path "ou=Info,ou=Services,ou=$site2,ou=Sites,dc=coud,dc=local" New-ADGroup -Name G_Compta_$site2 -GroupScope Global -GroupCategory Security -Path "ou=Compta,ou=Services,ou=$site2,ou=Sites,dc=coud,dc=local" #*********************Groupes sous $site1************************ New-ADGroup -Name G_Info_$site1 -GroupScope Global -GroupCategory Security -Path "ou=Info,ou=Services,ou=$site1,ou=Sites,dc=coud,dc=local" New-ADGroup -Name G_Compta_$site1 -GroupScope Global -GroupCategory Security -Path "ou=Compta,ou=Services,ou=$site1,ou=Sites,dc=coud,dc=local" #*********************Groupes sous $site3************************ New-ADGroup -Name G_Info_$site3 -GroupScope Global -GroupCategory Security -Path "ou=Info,ou=Services,ou=$site3,ou=Sites,dc=coud,dc=local" New-ADGroup -Name G_Compta_$site3 -GroupScope Global -GroupCategory Security -Path "ou=Compta,ou=Services,ou=$site3,ou=Sites,dc=coud,dc=local" foreach ($user in $users){ $name = $user.firstName + " " + $user.lastName $fname = $user.firstName $lname = $user.lastName $login = $user.firstName + "." + $user.lastName $Uoffice = $user.office $Upassword = $user.password $dept = $user.department #********Ajout des utilisateurs de $site2 dans leurs groupes******************** if ($Uoffice -eq "$site2" -and $dept -eq "Info"){ Add-ADGroupMember -Identity "G_Info_$site2" -Members $login echo "$name a été ajouté au groupe G_Info_$site2" } elseif ($Uoffice -eq "$site2" -and $dept -eq "Compta"){ Add-ADGroupMember -Identity "G_Compta_$site2" -Members $login echo "$name a été ajouté au groupe G_Compta_$site2" } #********Ajout des users de $site3 dans leurs groupes******************** if ($Uoffice -eq "$site3" -and $dept -eq "Info"){ Add-ADGroupMember -Identity "G_Info_$site3" -Members $login echo "$name a été ajouté au groupe G_Info_$site3" } elseif ($Uoffice -eq "$site3" -and $dept -eq "Compta"){ Add-ADGroupMember -Identity "G_Compta_$site3" -Members $login echo "$name a été ajouté au groupe G_Compta_$site3" } #********Ajout des users de $site1 dans leurs groupes******************** if ($Uoffice -eq "$site1" -and $dept -eq "Info"){ Add-ADGroupMember -Identity "G_Info_$site1" -Members $login echo "$name a été ajouté au groupe G_Info_$site1" } elseif ($Uoffice -eq "$site1" -and $dept -eq "Compta"){ Add-ADGroupMember -Identity "G_Compta_$site1" -Members $login echo "$name a été ajouté au groupe G_Compta_$site1" } } #Accolade fermante de notre boucle – Fin de la boucle Add-ADGroupMember -Identity 'G_Info_InterSite' -Members G_Info_$site1,G_Info_$site2,G_Info_$site3 Add-ADGroupMember -Identity 'G_Compta_InterSite' -Members G_Compta_$site1,G_Compta_$site2,G_Compta_$site3
Configuration: Windows / Chrome 80.0.3987.116
A voir également:
- Manipuler fichiers csv powershell
- Renommer des fichiers en masse - Guide
- Fichiers epub - Guide
- Wetransfer gratuit fichiers lourd - Guide
- Explorateur de fichiers - Guide
- Fichiers bin - Guide
3 réponses
salut
désolé je n'ai pas compris ce que tu voulais faire ^^'
si le script fonctionne bien et s'exécute
tu voudrais le mettre en pause ?!
désolé je n'ai pas compris ce que tu voulais faire ^^'
si le script fonctionne bien et s'exécute
tu voudrais le mettre en pause ?!
Hey, enft c’est pas très compliqué j’ai une liste d’utilisateur dans un fichier .csv que j’identifie notamment par une colonne ville, tout les users sont de base soit à Lyon / paris / Marseille
Avec ce script j’aimerai pouvoir changer le nom des villes du .csv (les modifications sont appliqué qu’ après la fermeture du programme, du coup cela ne fonctionne pas, les villes reste inchangé quand j’exécute le programme une fois (même si les modifications sont pris en compte dans le csv)
J’espère que j’ai été assez clair, je t’invite à tester le script si tu veux :)
Bonne journée
Avec ce script j’aimerai pouvoir changer le nom des villes du .csv (les modifications sont appliqué qu’ après la fermeture du programme, du coup cela ne fonctionne pas, les villes reste inchangé quand j’exécute le programme une fois (même si les modifications sont pris en compte dans le csv)
J’espère que j’ai été assez clair, je t’invite à tester le script si tu veux :)
Bonne journée
ah ok je commence à comprendre ^^
j'ai trouvé ça sur microsoft : https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/set-content?view=powershell-7
a essayer avec un "pip" (j'ai oublié l'autographe lol) après ton foreach
j'ai trouvé ça sur microsoft : https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/set-content?view=powershell-7
Get-Content -Path .\Notice.txt
Warning
Replace Warning with a new word.
The word Warning was replaced.
(Get-Content -Path .\Notice.txt) |
ForEach-Object {$_ -Replace 'Warning', 'Caution'} |
Set-Content -Path .\Notice.txt
Get-Content -Path .\Notice.txt
Caution
Replace Caution with a new word.
The word Caution was replaced.
a essayer avec un "pip" (j'ai oublié l'autographe lol) après ton foreach