如何使用powershell仅从employeeID中检索AD distinguishedName?

时间:2015-04-29 14:33:32

标签: powershell csv active-directory

我要做的是运行一个脚本,将CSV文件中的员工ID与AD进行比较,如果它们不在CSV中但在AD中,则它们应该: - 被禁用 - 在说明中添加了终止日期评论 - 转到其他OU

我在下面使用的脚本会禁用该帐户并添加注释,但在尝试移动到其他OU时出现错误。错误是: Move-ADObject:找不到具有标识的对象:'name1test'...

我已经尝试了很多东西来调整脚本以仅使用employeeID来获取samAccountName或distinguishedName,但我没有运气。有什么想法吗?

Import-Module ActiveDirectory  

$TargetOU = "ou=Term,ou=Logins,dc=domain,dc=com"
$Date = Get-Date -Format MM-dd-yyyy
$Users = Import-Csv c:\ADTerm.csv | Select-object -ExpandProperty EmployeeID
$Terms = Get-ADUser -filter * -SearchBase "ou=Test,ou=Logins,dc=domain,dc=com" -Properties EmployeeID | Where-Object{$_.EmployeeID -and ($Users -notcontains $_.EmployeeID)}

ForEach ($Term in $Terms)
{
    # Retrieve user sAMAccountName.
    $Name = $Term.sAMAccountName
    # Disable the user.
    Set-ADUser -Identity $Name -Enabled $False -Description "Terminated - $Date"
    # Move the user.
    Move-ADObject -Identity $Name -TargetPath $TargetOU
}

1 个答案:

答案 0 :(得分:2)

专有名称是获得AD用户时自动检索的默认属性之一,因此您需要做的就是替换它:

$Name = $Term.sAMAccountName

用这个:

$Name = $Term.DistinguishedName