Question

Essayer de déterminer s'il y a des dossiers utilisateur sur le réseau qui ne disposent pas d'un compte d'utilisateur associé. Tous les résultats reviennent « disparus » lorsque la majorité doit retour « Trouvé ». Toutes les idées?

$Dir = "\\ServerName\Share\"
$FolderList = Get-ChildItem($Dir) | where {$_.psIsContainer -eq $true}
$UserList = get-qaduser -sizelimit 0 | select LogonName

foreach ($Folder in $FolderList)
{
if ($UserList -contains $Folder.name)
{
"Found:  " + $Folder.name
}
Else
{
"Missing:  " + $Folder.name
}
}
Était-ce utile?

La solution

Que diriez-vous d'essayer une approche légèrement différente qui utilise une table de hachage (qui offre exceptionnellement rapide de recherches clés):

$users = @{}
Get-QADUser -sizelimit 0 | Foreach {$users["$($_.LogonName)"] = $true}
$dir = "\\ServerName\Share\"
Get-ChildItem $dir | Where {$_.PSIsContainer -and !$users["$($_.Name)"]}

Si le nom du dossier ne correspond exactement LogonName, alors que les notes EBGreen, vous devrez régler la clé (utilisateurs $ [ « de $ ($ .LogonName) »]) ou le nom du dossier lorsque vous l'utiliser pour indexer le Hashtable (! $ users [ "de $ ($ .Nom)"]).

Autres conseils

-contains correspondra si l'élément de la collection est identique à ce que vous testez alors assurez-vous que le $ Folder.Name est exactement le même que LogonName. il ne serait pas habituellement. La plupart des entreprises auraient le nom du dossier soit foo $ pour un foo utilisateur nommé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top