Comparez les prix des domaines et des services informatiques des vendeurs du monde entier

Supprimer un utilisateur de groupes Active Directory

J'ai écrit un script pour déconnecter et déplacer les utilisateurs répertoriés dans un fichier texte et dans le cadre de ce scénario, je voudrais les supprimer de groupes qui leur fournissent des licences pour des logiciels spécifiques.

Mon script supprime les utilisateurs, mais coincé dans le cycle, me disant que le groupe a été supprimé et je ne peux pas comprendre pourquoi.

Je ne suis pas sûr que je n'en ai pas assez ici, aide?!?

Remercier!

Ceci est un bloc qui documenté:

foreach ($group in $groups){
#Write-Host $group
foreach ($user in Get-ADGroupMember -Identity $group){
If ((Get-ADUser $user.SamAccountName -Properties MemberOf).MemberOf -Contains $group){
Write-Host "$term is a member of $group"
Remove-ADGroupMember -Identity $group -Member $user -Confirm:$false
Write-Host "$term membership of $group removed."
}
else{
Write-Host "$term is not a member of any groups"
}
}

}

Si nécessaire, c'est l'ensemble du script (Désactivée):

    #Import the Active Directory Module for Powershell
import-module activedirectory

#Get List of Terms
$terms = Get-Content "Terms.txt"

#Your name
$admin = Read-Host -Prompt "Please enter your name "

#foreach loop
foreach($term in $terms){

$user = Get-ADUser -Filter {displayName -like $term} -Properties CanonicalName

#Get location of User
$split = $user.DistinguishedName.Split(',')
$path = "$($split[-4])"
$location = $path
$ou = 'OU=Disabled,OU=People,'
$dn = ',DC=some,DC=domain,DC=tld'
$base = $ou + $location + $dn

# disable user
Disable-ADAccount -identity $user

#Add Description
$day = Get-Date -Format g
Set-ADUser $user -Description "Disabled by $admin $day"

Write-Host "$term Disabled by $admin on $day"

#Groups to remove user from on termination
$groups = @('CN=Group,OU=SomeOU,OU=Groups,OU=OU2,DC=some,DC=domain,DC=tld', 'CN=Group,OU=SomeOU,OU=Groups,OU=OU2,DC=some,DC=domain,DC=tld', 'sec_software_license_group1', 'sec_software_license_group2', 'sec_software_license_group3')

foreach ($group in $groups){
#Write-Host $group
foreach ($user in Get-ADGroupMember -Identity $group){
If ((Get-ADUser $user.SamAccountName -Properties MemberOf).MemberOf -Contains $group){
Write-Host "$term is a member of $group"
Remove-ADGroupMember -Identity $group -Member $user -Confirm:$false
Write-Host "$term membership of $group removed."
}
else{
Write-Host "$term is not a member of any groups"
}
}
}

Write-Host 'Disabling and moving '$term

# move user
move-adobject -Identity $user -targetpath $base

write-host $term' is moved to Disabled'
}
Invité:

Dominique

Confirmation de:

Alors ma première pensée - Cette erreur typographique ou transposez-la avec laquelle vous avez rencontré une désinfection de votre script. Ainsi, ce qui suit est basé uniquement sur la façon dont le poste a été initialement écrit ...

Eh bien, je ne peux pas en être sûr, mais il semble que ce bit devait être supprimé:

foreach ($user in Get-ADGroupMember -Identity $group){

On dirait que vous capturez tous les utilisateurs de chaque groupe, puis pour chaque utilisateur trouvé, supprimez-les du groupe. - Que peut être bon - Sauf que vous le faites non seulement pour les utilisateurs conditionnels - Vous le faites pour chaque utilisateur dans chaque groupe que vous avez spécifié.

Pour autant que je puisse juger,

Si vous l'avez lancé contre un compte dans le groupe Administrateur de domaine - Vous effaceriez effectivement le groupe de sécurité de l'administrateur de domaine.

Je pense que la raison de votre problème peut être due au fait que $ user, que vous définissez dans la chaîne 13, S. ne coïncide pas $ user, que vous utilisez dans la chaîne 37.

Je vous suggère de remplacer la chaîne 37-46 Cette ligne unique:

Remove-ADGroupMember -Identity $Group -Member $User -Confirm:$False -ErrorAction:SilentlyContinue

Il décide quelques problèmes que j'ai lors du choix d'un code remplaçable:

C'est efficace et

Il se débarrasse des lignes inutiles "Write-Host" ("-Verbose" Il n'y a pas de simple), et

Cela empêche l'apparition du sang sur l'écran, si l'utilisateur

ne pas

Membre de l'un des groupes spéciaux.

Pour répondre aux questions, connectez-vous ou registre