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

时间:2018-04-26 17:11:15

标签: powershell active-directory

我正在尝试将已禁用的用户移动到AD中的正确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 
 }

3 个答案:

答案 0 :(得分:1)

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

$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

但是,您已包含$OUTransfer 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

答案 1 :(得分:0)

  

目标OU是$ OUTransfer =" CN =禁用用户   帐户,DC =公司,DC =本地"

这有两个可能的问题:

  1. 如果是OU,则应以OU=开头。它可能是一个容器"而不是" OU"。如果是这种情况,那就没问题了。
  2. =后面有空格。应该没有空间。

答案 2 :(得分:0)

首先,您需要拥有每个用户的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

其次,您需要指定您在CSV中选择的列(期间)     你的foreach循环)

你可以这样做:

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  
 }