0

我正在使用内置的 powershell commandlet 在活动目录中实现一些用户创建,最近我遇到了这个问题。当尝试读取 $_.UID 是文件中的字段之一的用户数据文件时,我使用 UID 执行 Get-ADUser 以检查用户是否已存在于 ldap 中。如果我得到一个空对象,那么我想创建用户,因为这个 id 还没有在 ldap 中,否则我想跳过数据文件中的条目。我的脚本是第一次创建用户。如果我在同一个数据文件上再次运行它(用户不应再为 UID 字段为空),则 if 条件仍然为真,并且脚本会再次尝试创建用户。我是 powershell 脚本的新手,所以我一定是误解了一些东西。我究竟做错了什么?感谢您的帮助!

Function createUsers{
Import-CSV "~\Desktop\inData.csv" | ForEach-Object {
    $USER  = Get-ADUser -LDAPFilter "(uid=$_.UID)"

    if($USER -eq $Null){   #BROKEN DOESN'T DO ANYTHING
                           #(!$USER) Doesn't work either 
        Write-Host "Making next user."
        .
        .
        .

    }else{
        Write-Host "Skipping, user exists!!"
    }
}
}
4

1 回答 1

1

我认为您的问题出在您的 Get-ADUser 查询中。Active Directory 中没有名为“uid”的属性。这将使 $USER 始终为空,并使其始终希望创建一个新用户。

尝试使用 sAMAccountName 代替:

$User = Get-ADUser -LDAPFilter "(sAMAccountName=$_.UID)"

要获得所有可用属性的完整列表,我喜欢执行以下操作:

Get-ADUser MyUserName -Properties *
于 2013-11-08T22:38:15.257 回答