La tâche semble triviale! Beaucoup d'utilisateurs vont et viennent dans notre environnement. De temps en temps, je veux vérifier les dossiers de profil itinérants "orphelins" et se débarrasser d'eux. Mon code fonctionne si le nom d'utilisateur correspond exactement au nom du dossier, mais pas pour les dossiers où Windows a ajouté un fichier .V2, .V3, etc. -eq fonctionne mais pas-comme ou -contains, ou l'une des façons dont j'ai essayé d'insérer un caractère générique. J'ai essayé une construction d'où-objet et échoué aussi bien. Par exemple, si nous avons un utilisateur bob.smith, je ne veux pas que ma liste "orpheline" inclue des dossiers de profil nommés bob.smith ou bob.smith.V2.Utilisation de Powershell pour nettoyer les dossiers de profil utilisateur Active Directory orphelins
Voici mon code:
# Put profile folder names in array
$profilefolders = Get-ChildItem -Name "\\server\profiles$"
# Initialize arrays
$orphanprofiles = @()
foreach ($userprofile in $profilefolders)
{
# Do profile names match up with user accounts?
If(Get-ADUser -Filter {SamAccountName -eq $userprofile})
{
# User account exists: no action
}
Else
{
# Profile is an orphan. Add to list.
$orphanprofiles += $userprofile
}
}
# put array values in a string variable with newline char for screen output
$outputprofiles = $orphanprofiles -join "`n"
Write-Output "`n"
Write-Output "Orphan profiles: `n$outputprofiles"
Write-Output " "
Génial! La première réponse fonctionne, la seconde génère un tas de rouge, en commençant par le! à la ligne 8. Il y a plein de trucs là-dedans, je ne comprends pas, je vais aller y lire. Merci beaucoup pour le coup de pouce sur la courbe d'apprentissage. – SKaye
Drat! # 1 n'est pas la réponse: je ne veux pas ignorer chaque dossier avec un .Vx ajouté, juste ignorer la partie .Vx de celui-ci. – SKaye
@SKaye J'ai changé le deuxième script pour avoir une paire de parenthèses supplémentaire avec l'opérateur '!' Not. N'a pas une AD à la maison, donc ne peut pas le tester. – LotPings