【问题标题】:Powershell - Disable and move users to a new OUPowershell - 禁用并将用户移动到新的 OU
【发布时间】:2018-09-11 11:58:41
【问题描述】:

这里是全新的成员..

我正在尝试创建一个 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。米克

【问题讨论】:

    标签: powershell foreach


    【解决方案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"
    

    【讨论】:

    • 这似乎让我更进一步,但我仍然得到一个错误..嗯。无法执行该操作,因为该对象的父对象未实例化或已删除。感谢您的回复!
    • 更改订单有效吗?获取 ADUser $_ |移动-ADObject -TargetPath $OU -PassThru |禁用-ADAAccount
    • Get-ADUser $_ 返回什么?
    • 以下信息: DistinguishedName : CN="users description from AD",OU=DEPARTURES,OU=IT,OU=USERS,OU=DK,OU=Countries,DC=xxx 已启用 : True GivenName : "firstname" Name : "users description from AD" ObjectClass : user ObjectGUID : "long id" SamAccountName : "firstname.lastname" SID : "long id" Surname : "users last name" UserPrincipalName : "users email address"跨度>
    • 您使用哪个 PowerShell 版本?
    【解决方案2】:

    这里有几个错误;

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

    2-您正在尝试将移动广告对象移动到 $ou 这只是一个字符串。我假设您的 new-adOrganizationalUnit 命令有效;所以在这之后添加一行“$newOU = Get-ADorganizationalunit”-path [whatever]

    对不起,我没有时间打字和测试:(

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多