将用户移动到Powershell中禁用的OU

将用户移动到Powershell中禁用的OU,powershell,active-directory,Powershell,Active Directory,我正在尝试将我的残疾用户移动到广告中的适当OU。我已经尝试使用此代码一段时间了,逻辑对我来说似乎是合理的。请让我知道你的想法: $disalbled= Search-ADAccount -AccountDisabled -UsersOnly | Select SamAccountName | export-csv -Path 'C:\Users\andrew.schilling\Desktop\test\Test.csv' -NoTypeInformation $disbaledlist =

我正在尝试将我的残疾用户移动到广告中的适当OU。我已经尝试使用此代码一段时间了,逻辑对我来说似乎是合理的。请让我知道你的想法:

$disalbled= Search-ADAccount -AccountDisabled -UsersOnly | Select SamAccountName | export-csv -Path 'C:\Users\andrew.schilling\Desktop\test\Test.csv' -NoTypeInformation

$disbaledlist = import-csv 'C:\Users\andrew.schilling\Desktop\test\Test.csv' 

foreach ($aduser in $disabledlist) { 
 Move-ADObject -Identity $aduser -TargetPath $OUTransfer 
 }
并且目标OU是$outTransfer=“CN=已禁用的用户 账户,DC=公司,DC=本地“

这可能有两个问题:

  • 如果是OU,则应以
    OU=
    开头。它可能是一个“容器”,而不是一个“OU”。如果是这样,那没关系
  • =
    后面有一个空格。应该没有空间

  • 首先,您需要拥有每个用户的DN才能移动它们

    Get-Help Move-ADObject -Examples
    
    概要 将Active Directory对象或对象容器移动到其他容器或域

    -------------------------- EXAMPLE 1 --------------------------
    
    C:\PS>Move-ADObject -Identity "OU=ManagedGroups,DC=Fabrikam,DC=Com"TarrgetPath "OU=Managed,DC=Fabrikam,DC=Com"
    
    更改此选项:

    $disalbled= Search-ADAccount -AccountDisabled -UsersOnly | Select SamAccountName | export-csv -Path 'C:\Users\andrew.schilling\Desktop\test\Test.csv' -NoTypeInformation
    
    $disalbled= Search-ADAccount -AccountDisabled -UsersOnly | Select DistinguishedName | export-csv -Path 'C:\Users\andrew.schilling\Desktop\test\Test.csv' -NoTypeInformation
    
    foreach ($aduser in $disabledlist) { 
     Move-ADObject -Identity $aduser.DistinguishedName -TargetPath $OUTransfer 
     }
    
    $OUTransfer = "CN=Disabled Users Accounts,DC=Company, DC=local"
    $disalbled= Search-ADAccount -AccountDisabled -UsersOnly | Select DistinguishedName | export-csv -Path 'C:\Users\andrew.schilling\Desktop\test\Test.csv' -NoTypeInformation
    $disabledlist = import-csv 'C:\Users\andrew.schilling\Desktop\test\Test.csv'
    
    foreach ($aduser in $disabledlist) { 
        Move-ADObject -Identity $aduser.DistinguishedName -TargetPath $OUTransfer  
     }
    
    对此:

    $disalbled= Search-ADAccount -AccountDisabled -UsersOnly | Select SamAccountName | export-csv -Path 'C:\Users\andrew.schilling\Desktop\test\Test.csv' -NoTypeInformation
    
    $disalbled= Search-ADAccount -AccountDisabled -UsersOnly | Select DistinguishedName | export-csv -Path 'C:\Users\andrew.schilling\Desktop\test\Test.csv' -NoTypeInformation
    
    foreach ($aduser in $disabledlist) { 
     Move-ADObject -Identity $aduser.DistinguishedName -TargetPath $OUTransfer 
     }
    
    $OUTransfer = "CN=Disabled Users Accounts,DC=Company, DC=local"
    $disalbled= Search-ADAccount -AccountDisabled -UsersOnly | Select DistinguishedName | export-csv -Path 'C:\Users\andrew.schilling\Desktop\test\Test.csv' -NoTypeInformation
    $disabledlist = import-csv 'C:\Users\andrew.schilling\Desktop\test\Test.csv'
    
    foreach ($aduser in $disabledlist) { 
        Move-ADObject -Identity $aduser.DistinguishedName -TargetPath $OUTransfer  
     }
    
    其次,您需要指定您在CSV中选择的列(在 您的foreach循环)

    您可以这样做:

    $disalbled= Search-ADAccount -AccountDisabled -UsersOnly | Select SamAccountName | export-csv -Path 'C:\Users\andrew.schilling\Desktop\test\Test.csv' -NoTypeInformation
    
    $disalbled= Search-ADAccount -AccountDisabled -UsersOnly | Select DistinguishedName | export-csv -Path 'C:\Users\andrew.schilling\Desktop\test\Test.csv' -NoTypeInformation
    
    foreach ($aduser in $disabledlist) { 
     Move-ADObject -Identity $aduser.DistinguishedName -TargetPath $OUTransfer 
     }
    
    $OUTransfer = "CN=Disabled Users Accounts,DC=Company, DC=local"
    $disalbled= Search-ADAccount -AccountDisabled -UsersOnly | Select DistinguishedName | export-csv -Path 'C:\Users\andrew.schilling\Desktop\test\Test.csv' -NoTypeInformation
    $disabledlist = import-csv 'C:\Users\andrew.schilling\Desktop\test\Test.csv'
    
    foreach ($aduser in $disabledlist) { 
        Move-ADObject -Identity $aduser.DistinguishedName -TargetPath $OUTransfer  
     }
    
    完整解决方案:

    $disalbled= Search-ADAccount -AccountDisabled -UsersOnly | Select SamAccountName | export-csv -Path 'C:\Users\andrew.schilling\Desktop\test\Test.csv' -NoTypeInformation
    
    $disalbled= Search-ADAccount -AccountDisabled -UsersOnly | Select DistinguishedName | export-csv -Path 'C:\Users\andrew.schilling\Desktop\test\Test.csv' -NoTypeInformation
    
    foreach ($aduser in $disabledlist) { 
     Move-ADObject -Identity $aduser.DistinguishedName -TargetPath $OUTransfer 
     }
    
    $OUTransfer = "CN=Disabled Users Accounts,DC=Company, DC=local"
    $disalbled= Search-ADAccount -AccountDisabled -UsersOnly | Select DistinguishedName | export-csv -Path 'C:\Users\andrew.schilling\Desktop\test\Test.csv' -NoTypeInformation
    $disabledlist = import-csv 'C:\Users\andrew.schilling\Desktop\test\Test.csv'
    
    foreach ($aduser in $disabledlist) { 
        Move-ADObject -Identity $aduser.DistinguishedName -TargetPath $OUTransfer  
     }
    

    复制代码试图执行的操作的最简单方法是:

    $OUTransfer = "CN=Disabled Users Accounts,DC=Company,DC=local"
    
    $DisabledUsers = Search-ADAccount -AccountDisabled -UsersOnly
    $DisabledUsers |
        Select-Object -ExpandProperty SamAccountName |
        Export-Csv -Path 'C:\Users\andrew.schilling\Desktop\test\Test.csv'
    
    $DisabledUsers | Move-ADObject -TargetPath $OUTransfer
    
    但是,您要包括已在
    $outtransfer
    OU中的所有用户。那是白费力气。我会这样替换最后一行:

    $DisabledUsers |
        Where-Object DistinguishedName -notlike "*$OUTransfer" |
        Move-ADObject -TargetPath $OUTransfer
    
    如果您根本不需要CSV,只是将其用作某种形式的临时存储,那么您可以进一步简化它:

    $OUTransfer = "CN=Disabled Users Accounts,DC=Company,DC=local"
    
    Search-ADAccount -AccountDisabled -UsersOnly |
        Where-Object DistinguishedName -notlike "*$OUTransfer" |
        Move-ADObject -TargetPath $OUTransfer
    

    问题是什么?它不会抛出错误,但不会移动用户只是猜测,但它可以是任何有权限的东西吗?您可以手动执行吗?您是否有多个域控制器?如果您没有查看完成移动的同一个域控制器,则在复制完成之前,您将看不到更改。不,我们只有一个DCI已按照您的建议重新编写,并且仍在处理,但没有给出错误。当前脚本是$outTransfer=“CN=Disabled Users Accounts,DC=Company,DC=local”$disalbled=Search AdaAccount-AccountDisabled-UsersOnly |选择DiscrimitedName |导出csv-Path'C:\Users\andrew.schilling\Desktop\test\test.csv'-NoTypeInformation$disbaledlist=import csv'C:\Users\andrew.schilling\Desktop\test\test.csv'($disabledlist.DifferentizedName中的$DifferentizedName){移动ADObject-Identity$aduser-TargetPath$OutTransfer}@AJSKRILLA我更新了答案以包含完整的解决方案。尝试一下,如果它仍然不起作用,请告诉我。-提示:您可以
    编写主机$aduser
    ,查看它是否正确地从CSV中获取条目。感谢您的帮助。它现在会抛出一条错误消息,这比我之前处理的问题要好。错误是Move ADOb对象:无法执行该操作,因为对象的父对象在第5行char:5+Move ADObject-TargetPath处未实例化或已删除$OUTransfer@AJSKRILLA你确定你的
    $outtransfer
    是一个存在的位置,并且你有正确的可识别名称吗?它看起来像是在你的一条评论中我希望你的DN中有额外的空间