moi c'est celle là que j'aime
sur les forums on n'est de plus en plus sage :mouarf:Citation:
l’homme plus sage apprend des erreurs des autres !
Confucius
Version imprimable
moi c'est celle là que j'aime
sur les forums on n'est de plus en plus sage :mouarf:Citation:
l’homme plus sage apprend des erreurs des autres !
Confucius
Notamment, grâce à moi :lol:
J'ai essayé ta ligne du post #17, mais avec$member est vide :(Code:
1
2
3
4 $member=""; if ($add=get-aduser -Properties memberof -filter {enabled -eq $true -and MemberOf -like $groupsource} -server "gad.schneider-electric.com") { $member+=$add };Write-Host "Member="$member
alorsCitation:
$member est vide
soit le groupe n'existe pas dans le domaine "gad.schneider-electric.com"
soit le groupe est vide dans le domaine "gad.schneider-electric.com"
soit tous les membres sont désactivé
vérifie ce que contient $groupsource
n'oublie pas que les cmdlets AD ne travail pas avec le name mais avec un de ces quatre attributs :
Distinguished Name (distinguishedName), GUID (objectGUID), Security Identifier (objectSid), SAM Account Name (sAMAccountName)
Le groupe existe bien dans ce domaine-là et n'est pas vide (je le vérifie avec l'outil Utilisateurs et ordinateurs Active Directory ), mais pour vérifier que les membres étaient actifs (au moins certains), j'ai rajouté ça dans le script :Code:
1
2
3
4
5
6
7 $member="" if ($add=get-aduser -Identity $groupsource -server "gad.schneider-electric.com") { $member+=$add } foreach ($mem in $member) { Write-Host $mem }
et
Que peut-on en conclure ?Citation:
get-aduser : Impossible de trouver un objet avec l’identité «GAD-SU-NextGenPDM_NonPROD» sous: «DC=gad,DC=schneider-electric,DC=com»
Et de plus, pourquoi me fais-tu la remarque sur le name ?
Je viens de rajouter un Write-Host dans ta boucle :et il n'est jamais affiché...Code:
1
2
3
4 $member=""; if ($add=get-aduser -Properties memberof -filter {enabled -eq $true -and MemberOf -like $groupsource} -server "gad.schneider-electric.com") { $member+=$add ; Write-Host "27 add="$add };Write-Host "28 Member="$member "/groupsource="$groupsource" / groupdest="$groupdest
Comme depuis 2 semaines, je ne peux plus me connecter à distance au serveur de ma boîte et donc ne peux faire des essais que les 2 jours où je suis présent (aujourd'hui et jeudi), j'ai repris ta proposition du post #8 en essayant de la modifier pour que ça réponde à mes attentes :
maisCode:Get-ADUser -Identity $groupsource -Server "gad.schneider-electric.com"| foreach {if ($_.enabled -eq $true) {Add-ADGroupMember -Identity $groupdest -Server "gad.schneider-electric.com" -members $_; $_.name}}
Tu as une idée ?Citation:
Get-ADUser : Impossible de trouver un objet avec l’identité «GAD-SU-NextGenPDM_NonPROD» sous: «DC=gad,DC=schneider-electric,DC=com».
EDIT : même message d'erreur qu'à 14h01...
n'oublie pas que les cmdlets AD ne travail pas avec l'attribue NAME mais seulement avec un de ces quatre attributs :Citation:
Get-ADUser : Impossible de trouver un objet avec l’identité «GAD-SU-NextGenPDM_NonPROD» sous: «DC=gad,DC=schneider-electric,DC=com».
Distinguished Name (distinguishedName), GUID (objectGUID), Security Identifier (objectSid), SAM Account Name (sAMAccountName)
et «GAD-SU-NextGenPDM_NonPROD» n'est clairement pas le distinguishedName ou le objectGUID ou le objectSid et ni le sAMAccountName qui est limité à 20 caractères voir cette doc !
en faite tous tes problèmes depuis le debut viennent de cette limitation de 20 caractères car «GAD-SU-NextGenPDM_NonPROD» fais 26 caractères !
tu devrais le bien le voir en fessent ce test :
tu devrais avoir :Code:Get-ADGroup -Filter {name -eq "GAD-SU-NextGenPDM_NonPROD"} -Server "gad.schneider-electric.com" | foreach {$_.Name;$_.SamAccountName}
GAD-SU-NextGenPDM_NonPROD
GAD-SU-NextGenPDM_No
une solution, un filter sur le name du groupe :
à jeudi ;)Code:
1
2
3
4
5
6
7
8 $member=""; $DSNgrsource = (Get-ADGroup -Filter {name -eq $groupsource} -Server "gad.schneider-electric.com").DistinguishedName if ($add = get-aduser -Properties memberof -filter {enabled -eq $true -and MemberOf -like $DSNgrsource} -server "gad.schneider-electric.com") { $member += $add Write-Host "27 add=" $add } Write-Host "28 Member="$member "/groupsource="$groupsource" / groupdest="$groupdest
Je sens bien ta piste pour utiliser DistinguishedName, mais comme je suis rentré chez moi, et que la connexion ne marche toujours pas, je ferai l'essai jeudi...
Ca y est ; j'ai fait l'essai mais encore problème :aie:
Si je faisCode:
1
2
3
4
5 $samgrsource = ((Get-ADGroup -Filter {name -eq $groupsource} -Server "gad.schneider-electric.com").sAMAccountName) $samgrdest = ((Get-ADGroup -Filter {name -eq $groupdest} -Server "gad.schneider-electric.com").sAMAccountName).Substring(1,20) Write-Host "22 source=$samgrsource / dest=$samgrdest" Get-ADUser -Identity $samgrsource -Server "gad.schneider-electric.com"| foreach {if ($_.enabled -eq $true) {Add-ADGroupMember -Identity $samgrdest -Server "gad.schneider-electric.com" -members $_; $_.name}}
et ton test (j'ai remplacé distinguishedName par sAMAccountName au cas où mais pas mieux) Get-ADGroup -Filter {name -eq "GAD-SU-NextGenPDM_NonPROD"} -Server "gad.schneider-electric.com" | foreach {$_.Name;$_.SamAccountName} retourneCitation:
Get-ADUser : Impossible de trouver un objet avec l’identité «GAD-SU-NextGenPDM_NonPROD» sous: «DC=gad,DC=schneider-electric,DC=com».
donc la limitation à 20 caractères mentionnée dans la doc n'est pas respectée...Citation:
GAD-SU-NextGenPDM_NonPROD
GAD-SU-NextGenPDM_NonPROD
je déprime en regardent tes ligne de code :calim2: :?
si «GAD-SU-NextGenPDM_NonPROD» est un groupe, ce qui suit ne peut pas fonctionner 8O 8O 8O
ici tu recherche un utilisateur avec le nom d'un groupe !!!!!!!!!!!!Code:Get-ADUser -Identity $samgrsource
alors la doc dis :Citation:
donc la limitation à 20 caractères mentionnée dans la doc n'est pas respectée...
L'attribut SAM-Account-Name (également connu sous le nom d'utilisateur précédant Windows 2000) est limité à 256 caractères dans le schéma. Toutefois, dans le but de compatibilité ascendante, la limite est de 20 caractères. Pour plus d'informations, voir SAM-Account-Name Attribute ( http://go.microsoft.com/fwlink/?LinkId=153707 ).
et donc c'est 256 avec une limite à 20 mais sur le terrain pas partout, pour les utilisateurs : oui (20 car.), pour les groupes : non (256 car.)
En effet, j'ai pas de quoi être fier, j'ai corrigé mais...
Code:
1
2
3
4
5
6
7 Get-ADGroupMember "GAD-SU-NextGenPDM_NonPROD" -Server "gad.schneider-electric.com" | foreach {$_.Name;$_.enabled} $samgrsource = ((Get-ADGroup -Filter {name -eq $groupsource} -Server "gad.schneider-electric.com").sAMAccountName).Substring(1,20) $samgrdest = ((Get-ADGroup -Filter {name -eq $groupdest} -Server "gad.schneider-electric.com").sAMAccountName).Substring(1,20) Write-Host "22 source=$samgrsource / dest=$samgrdest" Get-ADGroupMember -Identity $samgrsource -Server "gad.schneider-electric.com"| foreach {if ($_.enabled -eq $true) {Add-ADGroupMember -Identity $samgrdest -Server "gad.schneider-electric.com" -members $_; $_.name}}
Citation:
GAD-SU-NextGenPDM_NonPROD
GAD-SU-NextGenPDM_NonPROD
22 source=AD-SU-NextGenPDM_Non / dest=AD-SU-NextGenPDM_DEV
Get-ADGroupMember : Impossible de trouver un objet avec l’identité «AD-SU-NextGenPDM_Non» sous: «DC=gad,DC=schneider-electric,DC=com
Code:
1
2
3
4 $samgrsource = ((Get-ADGroup -Filter {name -eq $groupsource} -Server "gad.schneider-electric.com").sAMAccountName) $samgrdest = ((Get-ADGroup -Filter {name -eq $groupdest} -Server "gad.schneider-electric.com").sAMAccountName) Get-ADGroupMember -Identity $samgrsource -Server "gad.schneider-electric.com"| foreach {if ($_.enabled -eq $true) {Add-ADGroupMember -Identity $samgrdest -Server "gad.schneider-electric.com" -members $_; $_.name}}
Pas de message d'erreur mais le groupe dest reste vide...et je ne sais pas comment afficher la propriété enabled des membres de ce groupe...
EDIT : Je viens seulement de voir ton post de 10h32 donc pas étonnant que le AMAccountName du groupe ne soit pas limité ; reste mon souci mentionné juste au-dessus.
Citation:
reste mon souci mentionné juste au-dessus.
tu parle de ce groupe ? :«AD-SU-NextGenPDM_Non» tu trouve pas un problème a la fin du nom du groupe ? il manque même le premier caractère !!Citation:
Get-ADGroupMember : Impossible de trouver un objet avec l’identité «AD-SU-NextGenPDM_Non» sous: «DC=gad,DC=schneider-electric,DC=com
vire les substring
Là je ne suis sur l'ordinateur mais sur mon téléphone donc un peu limité. ..
Regarde mon 2e essai (où il n'y a plus de message d'erreur mais où le groupe reste vide ) : les substring n'y sont plus...
ton deuxième code corriger :
Code:
1
2
3
4
5
6
7
8
9
10
11
12 $samgrsource = ((Get-ADGroup -Filter {name -eq $groupsource} -Server "gad.schneider-electric.com").sAMAccountName) $samgrdest = ((Get-ADGroup -Filter {name -eq $groupdest} -Server "gad.schneider-electric.com").sAMAccountName) Get-ADGroupMember -Identity $samgrsource -Server "gad.schneider-electric.com" | foreach { $_.SamAccountName if (get-aduser -filter {SamAccountName -eq $_.SamAccountName -and Enabled -eq $true} -Server "gad.schneider-electric.com") { Add-ADGroupMember -Identity $samgrdest -members $_ -Server "gad.schneider-electric.com"; $_.name } } # pour voir le résultat Get-ADGroupMember -Identity $samgrdest -Server "gad.schneider-electric.com"
:merci: pour la correction mais j'aurais besoin de 2 ou 3 explications :
1- pourquoi la syntaxe pourquoialors que Google me donne : ForEach (item In collection) ?Code:
1
2 foreach { $_.SamAccountName
2- pourquoi cette condition dans le filtre SamAccountName -eq $_.SamAccountName ?Citation:
-
3- quand je fais ton test de la ligne 12, c'est tout bon mais près d'une heure après avoir lancé le script, si je regarde avec l'outil "Utilisateurs et ordinateurs Active Directory" les membres du groupe GAD-SU-NextGenPDM_DEV, y en a toujours aucun...
le $_.SamAccountName m'a servi en test pour afficher le SamAccountNameCitation:
1- pourquoi la syntaxe pourquoi
Citation:
foreach {
$_.SamAccountName
tu peut l'enlevé
déjà vu plus haut, pour get-aduser tu doit choisir entre indentity ou filter.Citation:
2- pourquoi cette condition dans le filtre SamAccountName -eq $_.SamAccountName ?
pour notre cas je choisi filter pour filtre sur enabled et SamAccountName !
a tu plusieurs serveurs de domaine ?Citation:
3- quand je fais ton test de la ligne 12, c'est tout bon mais près d'une heure après avoir lancé le script, si je regarde avec l'outil "Utilisateurs et ordinateurs Active Directory" les membres du groupe GAD-SU-NextGenPDM_DEV, y en a toujours aucun...
si tu ne sais pas tu peut le voir comme ceci
est tu sur un site distant par rapport sur serveurs AD ? relier avec un lien WAN ?Code:(Get-ADDomain).ReplicaDirectoryServers
OK, j'ai compris pour les points 1 et 2 mais sûr que j'aurais pas trouvé !
Et pour le point 3, j'ai pas compté, mais il y a une bonne centaine de réponses...
Aujourd'hui pas sur un site distant, mais demain, si je continue mes essais, oui.
pour for il y a deux écritures :Citation:
alors que Google me donne : ForEach (item In collection) ?
le classic, comme un for/next :
et via le pipelineCode:
1
2
3
4 $Collection = 1..10 foreach ($item in $Collection) { write-host $item }
Code:
1
2
3
4 $Collection = 1..10 $Collection | foreach { write-host $_ }
a tu le même nombre comme ça ?Citation:
Et pour le point 3, j'ai pas compté, mais il y a une bonne centaine de réponses...
pour compter :Code:(Get-ADDomain -Server "gad.schneider-electric.com").ReplicaDirectoryServers
Code:
1
2 ((Get-ADDomain).ReplicaDirectoryServers).count ((Get-ADDomain -Server "gad.schneider-electric.com").ReplicaDirectoryServers).count
en tout cas ça peut expliquer le retard, rajout le server a la fin pour voir :
Code:Get-ADGroupMember -Identity $samgrdest -Server "gad.schneider-electric.com"