Powershell 试图从变量中获取-Identity值

Powershell 试图从变量中获取-Identity值,powershell,active-directory,Powershell,Active Directory,我知道最佳做法是使用属性值,如名称,区分名称等。但是,我使用的是两个系统,Active Directory中唯一在两个系统中相同的字段是扩展属性1。下面是代码。错误在于foreach循环不接受-Identity的变量 Function ArchiveLeavers { Write-Host "Archiving leavers. Details below..." $csvLeavers = Import-Csv -Path $fileLeavers foreach ($

我知道最佳做法是使用属性值,如
名称
区分名称
等。但是,我使用的是两个系统,Active Directory中唯一在两个系统中相同的字段是
扩展属性1
。下面是代码。错误在于
foreach
循环不接受
-Identity
的变量

Function ArchiveLeavers
{
Write-Host "Archiving leavers. Details below..."

$csvLeavers = Import-Csv -Path $fileLeavers      

    foreach ($user in $csvLeavers)
    {

    $csvID = $user.ExtensionAttribute1

    if (Get-ADUser -filter {extensionAttribute1 -eq $csvID} -SearchBase $LeaverOU)
    {
        Write-Host ($user.GivenName + ' ' + $user.LastName) " is already in leavers"
    }

    else
    {
        ForEach-Object  
        {
        $identity = Get-ADUser -filter {extensionAttribute1 -eq $csvID} | select distinguishedName | Format-Table -HideTableHeaders

        write-host ($user.GivenName + ' ' + $user.LastName) " needs moving"
        Move-ADObject -Identity $identity -TargetPath $LeaverOU;
        Set-ADUser    -Add @{extensionAttribute7=$user.ExtensionAttribute7}
        Write-Host ($user.GivenName + ' ' + $user.LastName) " has been moved"
        }

    }
  }
}
这就是错误:

Move-ADObject : Cannot convert 'System.Object[]' to the type 'Microsoft.ActiveDirectory.Management.ADObject' required by parameter 'Identity'. Specified method is not supported. At line:21 char:57 +Move-ADObject -Identity $identity -TargetPath $F ... +~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [Move-ADObject], ParameterBindingException + FullyQualifiedErrorId : CannotConvertArgument,Microsoft.ActiveDirectory.Management.Commands.MoveADObject 移动对象:无法将“System.Object[]”转换为类型 参数“Identity”需要“Microsoft.ActiveDirectory.Management.ADObject”。明确规定 方法不受支持。 第21行字符:57 +移动对象-标识$Identity-目标路径$F。。。 +~~~~~~~~~ +CategoryInfo:InvalidArgument:(:)[Move ADObject],ParameterBindingException
+FullyQualifiedErrorId:CannotConvertArgument,Microsoft.ActiveDirectory.Management.Commands.MoveADObject您使用的格式表将
$Identity
变量转换为
Move ADObject
不知道的对象,该对象只获取SAM、Guid、SID等输入类型

从管道中删除格式表,并更改以下内容:

$identity = Get-ADUser -filter {extensionAttribute1 -eq $csvID} | select distinguishedName | Format-Table -HideTableHeaders
为此:

$identity = Get-ADUser -filter {extensionAttribute1 -eq $csvID} 

不要对变量赋值使用格式列表/-表。它们仅用于格式化输出。谢谢!这是我把事情复杂化的错。。。。现在工作得很好。