正在尝试确定网络上是否存在没有关联用户帐户的用户文件夹。所有结果都返回"Missing“,而大多数结果应该返回"Found”。有什么想法吗?
$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
}
}发布于 2009-08-14 02:29:34
尝试使用哈希表(提供异常快速的键查找)的稍微不同的方法如何:
$users = @{}
Get-QADUser -sizelimit 0 | Foreach {$users["$($_.LogonName)"] = $true}
$dir = "\\ServerName\Share\"
Get-ChildItem $dir | Where {$_.PSIsContainer -and !$users["$($_.Name)"]}如果文件夹名称与LogonName不完全匹配,那么正如EBGreen所指出的,当您使用它来索引哈希表(!$users"$($_.Name)")时,您将需要调整键($users"$($_.LogonName)")或文件夹名。
发布于 2009-08-13 19:05:44
如果集合中的项与您正在测试的项相同,则-contains将匹配,因此请确保$Folder.Name与LogonName完全相同。通常情况下不会这样。对于名为foo的用户,大多数公司的文件夹名为foo$。
https://stackoverflow.com/questions/1273323
复制相似问题