Помощь Powershell. Не могу понять, что не так - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь найти все пользовательские объекты в AD OU, захватить их атрибут «Компания», затем использовать это значение, чтобы найти группу со значением, равным «компании», захватить поле описания этих групп и перезаписать исходная информация пользователя началась с поля отдела. Я хотел бы сделать это для всех пользователей определенной группы c. Вот код, который у меня есть (я не писал это):

$OU = "(name=OUTest)"
$DN = (get-adorganizationalunit -ldapfilter $name).distinguishedName
$users = get-aduser -searchbase $DN -filter * -properties *
foreach ($user in $users) {
$groupNameDesc = (get-adgroup $user.company).Description; 
set-aduser $user -description $groupNameDesc;
}

1 Ответ

0 голосов
/ 05 февраля 2020

В показанном вами коде есть некоторые проблемы:

  • Неправильный синтаксис фильтра ldap. Найти информацию здесь
  • вы пытаетесь получить ВСЕ свойства от пользовательских объектов, где вам нужно всего лишь несколько
  • нет теста, если группа найдена до настройки свойство описания пользователя

Это должно помочь:

$OUName = 'TheNameForTheOU'

# instead of the -Filter parameter, you can also use -LdapFilter "(name=$OUName)"
$DN = (Get-ADOrganizationalUnit -Filter "Name -eq '$OUName'").DistinguishedName

# find user objects inside the OU and take just the properties you need
# property DistinguishedName is always returned.
Get-ADUser -SearchBase $DN -Filter * -properties Company, Description | ForEach-Object {
    # try and find the group by that name
    $group = Get-ADGroup -Filter "Name -eq $($_.Company)" -Properties Description -ErrorAction SilentlyContinue
    if ($group) {
        Set-ADUser -Identity $_.DistinguishedName -Department $group.Description -WhatIf
    }
    else {
        Write-Warning "Could not find a group called $($_.Company)"
    }
}

Коммутатор -WhatIf имеет код, который просто записывает в консоль, что произойдет . Свойство описания пользователя фактически не обновлено. Когда вы будете удовлетворены информацией, отображаемой в консоли, удалите -WhatIf.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...