Я знаю, что лучше всего использовать значения свойств, такие как 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
Не используйте формат-список/таблицу с переменными назначениями. Они предназначены только для форматирования вывода. – Martin