【问题标题】:Determine If Users Are In Active Directory With PowerShell使用 PowerShell 确定用户是否在 Active Directory 中
【发布时间】:2014-01-10 20:33:49
【问题描述】:

我正在尝试确定 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 初学者提供一些建议吗?我尝试了在这里和其他地方发现的许多其他东西,但没有一个能够工作。谢谢!

【问题讨论】:

  • C:\Users 中的文件夹名称与 AD 中的用户名称不匹配。如果用户配置文件已经存在,则可能是 username.DomainName.###
  • 据我所知,您的代码看起来是正确的。唯一可能成为问题的是您的 Catch { } 块可能永远无法到达,因为 Get-ADUser 会创建非终止错误。要解决此问题,请在 Get-ADUser 上使用 -ErrorAction Stop。这会将错误变为终止错误。
  • @TrevorSullivan 他的问题是 all 名称会引发错误,因此会出现在 $unknownList 中。
  • 导致名称以$unknownList 结尾的实际错误是什么?在catch 块中添加一行Write-Error $_,这样您就可以看到发生了什么。您使用的是 PowerShell v2 吗? PowerShell 在 v3 之前不支持自动模块加载,因此您需要先运行Import-Module ActiveDirectory,然后才能使用Get-ADUser。您可以通过回显 $PSVersionTable 来检查您的 PowerShell 版本。
  • 我会在每个文件夹中的 ntuser.dat 文件上使用 Get-ACL,并查看所有者是否解析为用户,或者是孤立的 SID。使用文件夹名称进行帐户解析可能不可靠。用户名可以更改或截断,并且与其主文件夹的名称不匹配。

标签: windows powershell active-directory


【解决方案1】:

我想做类似的事情,但震惊的是,查看用户是否存在于 AD 中的唯一方法似乎是野蛮地让 Get-ADUser 抛出一个错误,然后你就会发现它。经过大量研究,我发现如果您使用 -Filter 参数,您实际上会返回与过滤器参数匹配的用户对象或 $Null 对象,而不是使用 -Identity 参数(因为没有匹配-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)"
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-22
    • 2023-03-26
    • 1970-01-01
    • 2012-05-13
    • 2019-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多