代码之家  ›  专栏  ›  技术社区  ›  user155959

Powershell-使用Quest cmdlet搜索和比较阵列

  •  2
  • user155959  · 技术社区  · 17 年前

    正在尝试确定网络上是否有任何没有关联用户帐户的用户文件夹。所有结果返回“缺失”,而大多数结果应返回“发现”。有什么想法吗?

    $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
    }
    }
    
    2 回复  |  直到 17 年前
        1
  •  2
  •   Keith Hill    17 年前

    尝试使用哈希表(提供异常快速的键查找)的稍微不同的方法如何:

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

    如果文件夹名称与LogonName不完全匹配,那么正如EBGreen所指出的,您需要调整键($users[”$($ .LogonName)“])或使用它索引哈希表时的文件夹名称(!$users[”$($ (名称)“])。

        2
  •  1
  •   EBGreen    17 年前

    推荐文章