Question [RESOLU]double foreach

Plus d'informations
il y a 12 ans 9 mois #15173 par Philippe
Réponse de Philippe sur le sujet Re:double foreach
enleve le exit du if $user.samaccountsam....
sinon tu quit le script des la premiere exclusion

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

Plus d'informations
il y a 12 ans 9 mois #15174 par Philippe
Réponse de Philippe sur le sujet Re:double foreach
enleve le exit du if $user.samaccountsam....
sinon tu quit le script des la premiere exclusion

6ratgus écrit:

(pas tres scientifique comme reponse !!) :blush:

du coup, ce n’était pas l’erreur :blink:

De plus moi je travailler sur une version avec mes corrections. Faut que je fasse plus attention !!!! :blush: :unsure:

[code:1]$ou1 = 0
$ignored1 = 0
$ignoredlist1 = 0
$user = 0
$ou1 = Get-ADUser -Filter * -SearchBase \"ou=1,ou=z-prototype,dc=domaine,dc=dom\" -properties samaccounttype

$ignored1 = Get-Content C:\script\ignored1.txt
foreach ($ignoredlist1 in $ignored1)
{
foreach ($user in $ou1)
{
$user.SamAccountName
$user.ObjectClass
$ignoredlist1
if ($user.samaccountname -like $ignoredlist1)
{
Write-Output \"L'utilisateur $('\"'+$user.samaccountname+'\"') fait parti de la liste d'exclusion, le mot de passe n'expire jamais\"
}
elseif ($user.ObjectClass -eq \"user\" -and $user.samaccounttype -eq \"805306368\"«»)
{
set-aduser $user.samaccountname -replace @{userAccountControl = 512; pwdLastSet = 0}

Write-Output \"L'utilisateur $('\"'+$user.samaccountname+'\"') devra changer de mot de passe\"
}
else {Write-Output \"wtf is this -> $('\"'+$user.samaccountname+'\"')\"}
}
}
[/code:1]

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

Plus d'informations
il y a 12 ans 9 mois #15187 par Philippe
Réponse de Philippe sur le sujet Re:double foreach
MCH écrit:

C'est donc un fichier texte avec les 'samaccountname' en colonne, un par ligne.

Bien entendu le vrai est colossal mais il est sur ce model.


apres relecture et vu le nombre d'utilisateur a gerer (colossal), ton script est bien mais pourrait etre mieux, principalement le test d'exclusion.

moi je modifierais tes boucles pour :
- premiere boucle scanner les utilisateurs de l'AD
- deuxieme boucle comparais les utilisateurs a la liste d'exclusion
- puis faire les actions des if (apres la deuxieme boucle mais dans la premiere)

ca t'eviterais d'affiché x fois les messages pour le meme utilisateur (x = nombre d'utilisateurs de l'ad multiplier par le nombre d'utilisateurs de la liste d'xclusion)

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

Plus d'informations
il y a 12 ans 7 mois #15388 par MCH
Réponse de MCH sur le sujet Re:double foreach
Bonjour,

Désolé pour cette réponse tardive, mais je tenais à apporter le script final.
Je n'ai pas réussi à trouver le pourquoi au fait que mon double 'foreach' ne fonctionne pas, alors j'ai répété mon bloc pour autant d'OU à traiter... Vraiment horrible et treeeeeeees long mais j'ai gagné du temps.
Quoi qu'il en soit encore merci pour l'aide !

[code:1]
$ou3 = Get-ADUser -Filter * -SearchBase \"ou=1,ou=z-prototype,dc=domaine,dc=dom\" -Properties samaccountname,samaccounttype,objectclass
$ignored = Get-Content -Path $bannedfilepath
foreach ($user3 in $ou3)
{
if ($ignored -contains $user3.samaccountname)
{
Write-Output \"L'utilisateur $('\"'+$user3.samaccountname+'\"') fait parti de la liste d'exclusion, le mot de passe n'expire jamais\"
}
elseif ($user3.ObjectClass -eq \"user\" -and $user3.samaccounttype -eq \"805306368\"«»)
{
Set-ADUser -Identity $user3.SamAccountName -PasswordNeverExpires $false -ChangePasswordAtLogon $true
Write-Output \"L'utilisateur $('\"'+$user3.samaccountname+'\"') devra changer de mot de passe\"
}
else {Write-Output \"wtf is this -> $('\"'+$user3.samaccountname+'\"')\"}
}
[/code:1]

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

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