如何将 adobject 移动到另一个 OU

How to move adobject to another OU

我想知道如何将 adobject 移动到另一个 ou?

我不确定我对 -filter 做错了什么

$CSVFiles = @"
adobject;                                              
StdUser
TstUser
SvcAcc
"@ | Convertfrom-csv -Delimiter ";"


$TargetOU =  "OU=ARCHIVE,DC=contoso,DC=com"

foreach ($item in $CSVFiles){
 get-adobject -Filter {(cn -eq $item.adobject)} -SearchBase "OU=ADMIN,DC=contoso,DC=com"| select distinguishedname | Move-ADObject -Identity {$_.objectguid}  -TargetPath $TargetOU
 
 }

-Identity { $_.ObjectGuid }不应该有,这个参数可以从管道绑定,你也不需要从它的属性中剥离对象,换句话说,Select-Object DistinguishedName没有其他用处比开销。

AD 模块不支持使用脚本块 (-Filter { ... }) 进行过滤,应避免使用。有关详细信息,请参阅 about_ActiveDirectory_Filter

$TargetOU = "OU=ARCHIVE,DC=contoso,DC=com"

foreach ($item in $CSVFiles){
    $adobj = Get-ADObject -LDAPFilter "(cn=$($item.adobject)" -SearchBase "OU=ADMIN,DC=contoso,DC=com"
    if(-not $adobj) {
        Write-Warning "'$($item.adobject)' could not be found!"
        # skip this object
        continue
    }
    $adobj | Move-ADObject -TargetPath $TargetOU
}