2016-06-09 2 views
0

У меня возникла проблема с перемещением учетных записей пользователей с помощью PowerShell. Я хочу переместить определенные учетные записи пользователей из OU в OU на основе того, что у них есть как атрибут Office.Перемещение активного пользователя каталога на основе атрибута Get-ADuser Office

Сценарий:

$prague = Get-ADUser -Filter * -Properties * | Select-Object -Property Office,SamAccountName | where -Property Office -eq "prague" 

Move-ADObject -Identity $prague -TargetPath "OU=LAB,DC=test,DC=cz" 

Powershell возвращает:

Move-ADObject : Cannot convert 'System.Object[]' to the type 'Microsoft.ActiveDirectory.Management.ADObject' required by parameter 'Identity'. Specified method is not supported. 
    At line:6 char:25 
    + Move-ADObject -Identity $prague -TargetPath "OU=LAB,DC=test... 
    + ~~~~~~~ 
    + CategoryInfo : InvalidArgument: (:) [Move-ADObject], ParameterBindingException 
    + FullyQualifiedErrorId : CannotConvertArgument,Microsoft.ActiveDirectory.Management.Commands.MoveADObject 

Можно ли запустить Move-ADObject Командлет на основе Get-ADUser с большим количеством параметров?

ответ

0

Move-Object Ожидает двигаться объект. Вы забиваете несколько в него через массив $prague. Для этого вам необходимо использовать конвейер или цикл.

Get-ADUser -Filter {Office -eq "prague"} -Properties Office | 
    Move-ADObject -TargetPath "OU=LAB,DC=test,DC=cz" 

Также не используйте -Properies *, когда вам нужно только -Properies Office. Кроме того, вы создаете потенциальную проблему с производительностью, вытаскивая все объекты, в том числе не кэшированные, в вашу сессию. Мы упростили это далее, запросив только пользователей соответствующего офиса вместо последующей обработки с помощью Where

+0

Большое спасибо. Сейчас это прекрасно. – Jan

+0

@Jan Добро пожаловать. Подумайте о том, чтобы отметить ответ, принятый (используя галочку рядом с ним), если он решил вашу проблему. – Matt

Смежные вопросы