使用PowerShell确定用户是否在Active Directory中

时间:2014-01-10 20:33:49

标签: windows powershell active-directory

我正在尝试确定C:\ Users中的哪些用户文件夹在Active Directory中具有活动用户。

我目前有以下内容:

$userProfile = Get-ChildItem -Path "C:\Users"
$unknownList = @()
foreach($user in $userProfile){
    try{
        Get-ADUser -Identity $user.Name | Out-Null
    }
    catch{
        $unknownList += $user.Name
    }
}
Write-Host $unknownList

我的问题是所有用户名似乎都不存在并被捕获。任何人都可以为PowerShell首次提供一些建议吗?我在这里和其他地方尝试了许多其他的东西,但没有一个能够工作。谢谢!

1 个答案:

答案 0 :(得分:7)

我想做类似的事情,并且感到震惊的是,看起来AD中是否存在用户的唯一方法是野蛮地让Get-ADUser抛出错误,然后你抓住它。经过大量研究后,我发现如果您使用实际返回的-Identity参数,则不是使用-Filter参数,而是使用与filter参数匹配的用户对象或$ Null对象(因为没有匹配-Filter参数)。一旦你在变量中有了这个,你就可以做一个“正确的”if / else语句评估而不会抛出任何错误。

这是你的代码:

$userProfile = Get-ChildItem #-Path "C:\Users"
$unknownList = @()
foreach($user in $userProfile){

    #Try getting the user
    $ADUser = Get-ADUser -Filter {SamAccountName -eq $User.Name}

    #Test to see if the user exists
    If($ADUser)
    {
        #User Exists
        #Write-host "$($User.Name) Exists"
    }
    Else
    {
        #User does not Exist
        #Write-host "$($User.Name) Does not Exist"

        Write-host "$($User.Name)"
    }
}