2016-03-10 4 views
1

Я знаю, что лучше всего использовать значения свойств, такие как Name, Distinguishedname и т. Д. Однако я работаю с двумя системами и единственным полем в Active Directory, которое одинаково в обеих системах есть extensionAttribute1. Ниже приведен код. Ошибка связана с циклом foreach и не принимает переменную для -Identity.Попытка получить значение -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
+0

Не используйте формат-список/таблицу с переменными назначениями. Они предназначены только для форматирования вывода. – Martin

ответ

2

Вы используете Format-Table, которые превращают вашу $Identity переменную на объект, который не известен Move-ADObject, которые получают только входной вид SAM, Guid, SID и т.д. .

Удалить Format-Table из трубы, Изменить это:

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

К 0:

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

Спасибо! Это моя вина за то, что она усложняет ситуацию. – KYS