Question [Résolu] Script de modification de masse GS AD

Plus d'informations
il y a 10 ans 9 mois #19798 par Philippe
Laurent Dardenne écrit:

Un 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 :sick:

un très bon conseil à suivre
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 !!!


Pour 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.

Deuxième très bon remarque ! Merci Laurent

je vais bosser dessus ce weekend, si tu as des infos je vous bien

Pour ne pas gâché ton week-end de bon temps, ton script devrait être comme ça et être fini ce matin :
[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.

Plus d'informations
il y a 10 ans 9 mois #19803 par Mo
Réponse de Mo sur le sujet Re:Script de modification de masse GS AD
Salut les gars,
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....:laugh:

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.

Plus d'informations
il y a 10 ans 9 mois #19807 par Philippe

Tout d'abord, un grand merci pour votre aide,

on est la pour s'entraidé !

Ben ca marche!

bonne nouvelle, ça t'a permit de profité du soleil ce week-end

J'ai testé vos suggestions, et j'avais toujours les deux erreurs, au final, je me suis mis à revoir mon script,

Je vois que tu a choisi d'utilisé le Module Active Directory, c'est une bonne option !

voici mon code final:

Oui et Non, il te reste encore deux lignes inutiles a supprimé puisque tu utilise le Module AD !
[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.

Plus d'informations
il y a 10 ans 9 mois #19814 par Laurent Dardenne
6ratgus écrit:

et enfin pour le plaisir ...

Ici, le plaisir est pour celui/celle qui debug en prod :P

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 10 ans 9 mois #19836 par Mo
Réponse de Mo sur le sujet Re:Script de modification de masse GS AD
Salut 6ratgus

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 \&quot;CN=$ADGroupName,OU=Global Groups,OU=UsersAndGroups,DC=MS,DC=com\&quot; -Description (\&quot;$Description\&quot;) [/code:1]<br><br>Message édité par: Mcdolyod, à: 2/06/15 10:21

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 10 ans 9 mois #19842 par Philippe
salut Mcdolyod

Cependant, le lancement du script depuis PSModuleAD génère des erreurs.

Quel 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 ;) merci

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.052 secondes
Propulsé par Kunena