Рейтинг:1

Устранение проблемы со свойствами пользователя AD

флаг ve
$info = Get-ADUser -Filter * -Properties * | ForEach-Object {$_.PSObject.Properties} | Где-объект {$_.value - как "NULL"}

ForEach ($i в $info){
    Set-ADUser -Identity $i.BaseObject.SamAccountName -Clear $i.Name
}

Выше приведен код, который я использую для поиска всех пользовательских полей AD со строковым значением «NULL». Я пытаюсь очистить эти поля.

Ниже приведено исключение, которое я обычно вижу, несмотря на то, что имя свойства явно существует (поскольку оно взято непосредственно из значения имени свойства AD.

Что мне не хватает?

Set-ADUser : указанный атрибут или значение службы каталогов не существует.
Имя параметра: OfficePhone
В строке: 2 символ: 5
+ Set-ADUser -Identity $i.BaseObject.SamAccountName -Clear $i.Name
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~
    + CategoryInfo: InvalidArgument: (RHanson:ADUser) [Set-ADUser], ArgumentException
    + FullyQualifiedErrorId: ActiveDirectoryCmdlet:System.ArgumentException,Microsoft.ActiveDirectory.Management.Commands.SetADUser
флаг cn
Атрибут name определенно не будет работать. Это только система. Другие, которые вы можете захотеть добавить, пытаются обработать случай, когда атрибут отсутствует, или просто продолжить.
флаг ve
Это действительно работало как есть. Были некоторые поля, такие как «Мобильный телефон», которые исчезли после удаления «мобильный», не знаю, что об этом думать.
Рейтинг:1
флаг in

Прямо из документы:

-Офисный телефон

[â¦] Чтобы изменить свойство объекта, необходимо использовать отображаемое имя LDAP. [ ¦ ]

и

-Офисный телефон

[…] Отображаемое имя LDAP (ldapDisplayName) этого свойства — phoneNumber. [ ¦ ]

А вот документы для Атрибут «Номер телефона»:

CN: номер телефона
Отображаемое имя Ldap: phoneNumber

К сожалению, Get-ADUser-Свойства * получает оба, Офисный телефон и номер телефона и я не знаю, как можно программно отличить реальные свойства от псевдонимов свойств, встроенных в сам модуль.

Однако в качестве обходного пути вы можете передать его через Get-ADObject который не навязывает вам свойства псевдонима:

$info = Get-ADUser -Filter * |
            Get-ADObject -Свойства * |
            ForEach-Object {$_.PSObject.Properties} |
            Где-объект {$_.value - как "NULL"}

ForEach ($i в $info){
    Set-ADUser -Identity $i.BaseObject.SamAccountName -Clear $i.Name
}

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.