Question
[Résolu] Script de modification de masse GS AD
- Philippe
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
un très bon conseil à suivreUn conseil pour débugger :
tu extrais le code de modification, ensuite tu l'utilises avec des données codé en dure dans la console :
[code:1]$objGroup= [ADSI]\"LDAP://NomDeGroupe,OU=Global Groups,OU=UsersAndGroups,DC=MS,DC=com\"
[/code:1]
Ainsi tu peux analyser pas à pas l'exécution de chaque instruction et déterminer si ce sont les instructions qui sont erronées ou la construction du code ou les données, voir les 3 en même temps
pour complete l'exemple de Laurent, tu fait un test avec que ces trois lignes :
[code:1]$objGroup= [ADSI]\"LDAP://mon groupe de test,OU=Global Groups,OU=UsersAndGroups,DC=MS,DC=com\"
$objGroup.Put(\"Description\",$Description)
$objGroup.SetInfo()
[/code:1]si ça fonctionne, tu fait un test avec que ces cinq lignes :
[code:1]$ADGroupName = \"mon groupe de test\"
$Description = \"description pour les tests\"
$objGroup= [ADSI]\"LDAP://$ADGroupName,OU=Global Groups,OU=UsersAndGroups,DC=MS,DC=com\"
$objGroup.Put(\"Description\",$Description)
$objGroup.SetInfo()[/code:1]
et si ca fonctionne encore, tu construit le script autour sans touché à cette partie !
Sauf amélioration bien sur !!!
Deuxième très bon remarque ! Merci LaurentPour la variable $objGroup, la substitution de la variable $ADGroupName se fait lors de l'exécution de la ligne, dans ton cas la substitution remplace $ADGroupName par rien ,car là où tu l'as déclarée elle n'existe pas.
Pour ne pas gâché ton week-end de bon temps, ton script devrait être comme ça et être fini ce matin :je vais bosser dessus ce weekend, si tu as des infos je vous bien
[code:1]
param (
[string] $ADGroupFile = \"ADGroupFile.csv\"
)
if ($ADGroupFile -ne \"\"«»){
Import-Csv $ADGroupFile -Delimiter \",\" | foreach {
$ADGroupName = $_.ADGroupName
$Description = $_.Description
if ($ADGroupName -ne \"\"«») {
Write-Host -ForegroundColor green \"###########################################################################################\";
Write-Host -ForegroundColor green \"Modification de groupe - $_.ADGroupName\";
$objGroup= [ADSI]\"LDAP://$ADGroupName,OU=Global Groups,OU=UsersAndGroups,DC=MS,DC=com\"
$objGroup.Put(\"description\",$ADGroupName)
$objGroup.SetInfo()
Write-Host -ForegroundColor green \"###########################################################################################\";
Write-Host;
}
}
Write-Host;
Write-Host -ForegroundColor Yellow \"**AD Group Processing complete**\";
}
else {
Write-Host -ForegroundColor red \"You must specify the AD group file.\";
}[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Mo
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 13
- Remerciements reçus 0
Tout d'abord, un grand merci pour votre aide,
J'ai testé vos suggestions,et j'avais toujours les deux erreurs, au final, je me suis mis à revoir mon script, et là attention....
Ben ca marche!
voici mon code final:
[code:1]
param (
[string] $ADGroupFile = \"ADGroupFile.csv\"
)
###########################################################################################
#Set the DC, OU domain information - Set depending on your environment
$objGroup= [ADSI]\"LDAP://$ADGroupName,OU=Global Groups,OU=UsersAndGroups,DC=MS,DC=com\"
###########################################################################################
#Check that we have an AD grouplist
if ($ADGroupFile -ne \"\"«»)
{ #loop over the groups in the .CSV file
Import-Csv $ADGroupFile -Delimiter \",\" | foreach {
#get the ADGroupname from the .CSV
$ADGroupName = $_.ADGroupName
$Description = $_.Description
#ensure the site name isnt empty or blank
if ($ADGroupName -ne \"\"«») {
Write-Host -ForegroundColor green \"###########################################################################################\";
Write-Host -ForegroundColor green \"Modification de groupe - $_.ADGroupName\";
Set-ADGroup -Identity \"CN=$ADGroupName,OU=Global Groups,OU=UsersAndGroups,DC=MS,DC=com\" -Description (\"$Description\"«»)
$Group.SetInfo()
Write-Host -ForegroundColor green \"###########################################################################################\";
Write-Host;
}
}
Write-Host;
Write-Host -ForegroundColor Yellow \"**AD Group Processing complete**\";
}
else
{
Write-Host -ForegroundColor red \"You must specify the AD group file.\";
}[/code:1]
Pour rappel, ce script est prévu pour l'ajout ou la modification du champ description.
Le fichier CSV doit être dans %userprofile%
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
on est la pour s'entraidé !Tout d'abord, un grand merci pour votre aide,
bonne nouvelle, ça t'a permit de profité du soleil ce week-endBen ca marche!
Je vois que tu a choisi d'utilisé le Module Active Directory, c'est une bonne option !J'ai testé vos suggestions, et j'avais toujours les deux erreurs, au final, je me suis mis à revoir mon script,
Oui et Non, il te reste encore deux lignes inutiles a supprimé puisque tu utilise le Module AD !voici mon code final:
[code:1]$objGroup= [ADSI]\"LDAP://$ADGroupName,OU=Global Groups,OU=UsersAndGroups,DC=MS,DC=com\" [/code:1]et[code:1]$Group.SetInfo() [/code:1]
et enfin pour le plaisir tu peut rajouté une gestion des erreurs au cas ou un groupe n'existe pas (erreur de saisie et autre),
idem pour le fichier ADGroupFile.csv
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Ici, le plaisir est pour celui/celle qui debug en prodet enfin pour le plaisir ...
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Mo
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 13
- Remerciements reçus 0
Yes le samedi était nikel avec pas mal de soleil, pas le dimanche!
je lançais mon script avec PSISE, il se lance nikel et j'ai pu traiter mes 100 groupes sans problèmes (PSISE ne vide pas les variable à la fin de l'exécution) merci à FRX pour ces infos!
Cependant, le lancement du script depuis PSModuleAD génère des erreurs.
J'ai pu modifier:
[code:1]write-host \"Modification de groupe - $_.ADGroupName\"[/code:1]
Par
[code:1]write-host \"Modification de groupe - $($_.ADGroupName)\"[/code:1]
Sinon il met la résolution de l'objet $_ et ensuite affiche .ADGroupName textuellement au lieu de SUBSTITIER $_.ADGroupName par son contenu.
J'ai supprimé:
[code:1]$Group.SetInfo()[/code:1]
Car le setInfo et mis automatiquement dans
[code:1]Set-ADGroup -Identity \"CN=$ADGroupName,OU=Global Groups,OU=UsersAndGroups,DC=MS,DC=com\" -Description (\"$Description\") [/code:1]<br><br>Message édité par: Mcdolyod, à: 2/06/15 10:21
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
Quel erreurs ?Cependant, le lancement du script depuis PSModuleAD génère des erreurs.
si ta pu corrigé tes erreurs alors tant mieux
si tous est bon, tu peut mettre le sujet en résolue en rajoutant [Resolu] au titre de ton premier message
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu] Script de modification de masse GS AD