Powershell-禁用用户并将其移动到新的OU

时间:2018-09-11 11:58:42

标签: powershell foreach

这里是新成员。

我正在尝试创建一个Powershell脚本,该脚本可以使用当前日期(dd-MM-yyyy)创建一个新的OU,从文本文件中禁用用户,然后将其移动到新创建的OU中。

到目前为止,除了工作之外,我已经获得了所有东西。我已经读到这可能是因为文本文件包含用户sAMAccountName,而用户Move-ADObject无法使用吗?

就记录而言,我一般来说对脚本编制还不是很熟悉,我知道最后一行已经完全写完了。一切都由我在网上找到的东西组成。

代码:

$OU = "$((get-date).toString('dd-MM-yyyy'))"
$PathOU = "OU=DEPARTURES,OU=IT,OU=USERS,OU=DK,DC=xxx"

New-ADOrganizationalUnit $OU -ProtectedFromAccidentalDeletion $false -Path $PathOU

$CN = get-content "\\Server\User Administration\User Deletion\UsersToBeDisabled.txt"
$CN |Foreach {
Get-ADUser $_ | Disable-ADAccount
Move-ADObject -Identity $_ -TargetPath $OU
}

错误:

  

Move-ADObject:在“ DC = xxx”下找不到标识为“ firstname.lastname”的对象。   ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException,Microsoft.ActiveDirectory.Management.Commands.MoveADObject **

希望您对此有一些想法,谢谢!

BR。米克

2 个答案:

答案 0 :(得分:1)

您可以将-PassThru开关与Disable-ADAccount配合使用,将用户对象沿画线移至Move-ADObject

Get-ADUser $_ | Disable-ADAccount -PassThru | Move-ADObject -TargetPath "OU=$OU,$PathOU"

这也应该起作用:

$user = Get-ADUser $_ 
$user | Disable-ADAccount 
$user | Move-ADObject -TargetPath "OU=$OU,$PathOU"

答案 1 :(得分:0)

在这里耦合错误;

1-您正尝试将整个AD对象用于-identity标志:而不是$ _,请尝试使用$ _。samaccountname。

2-您正在尝试将adobject移至$ ou,它只是一个字符串。我假设您的new-adOrganizationalUnit命令有效;因此,请在其后添加一行以表示“ $ newOU = Get-ADorganizationalunit” -path [whatever]

对不起,我没有时间输入和测试:(