Задать вопрос
@sten82

Как заставить Powershell прочитать звёздочку в имени Organizational Unit (OU)?

Доброго дня всем!
Имеется скрипт на PowerShell для смены пароля пользователя в AD. Берёт имя пользователя и новый пароль из csv файла. Проблема в том, что в имени OU присутствует звёздочка (*it) (и не спрашивайте почему) и избавится от неё нельзя.
Без звёздочки в имени всё прекрасно работает.
Как можно это победить?

Скрипт:
Import-Csv users2.csv -Delimiter ";" | Foreach {
$NewPass = ConvertTo-SecureString -AsPlainText $_.NewPassword -Force
Set-ADAccountPassword -Identity $_.sAMAccountName -NewPassword $NewPass -Reset -PassThru | Set-ADUser -ChangePasswordAtLogon $false
}

Пример записи в csv файле:
sAMAccountName;NewPassword
CN=user,OU=*it,OU=name,DC=name,DC=loc;PassWord123
  • Вопрос задан
  • 121 просмотр
Подписаться 1 Средний 4 комментария
Решения вопроса 2
@MaxKozlov Куратор тега PowerShell
Потому что у PS (по крайней мере в версии 5.1) проблем с этим нет. Только что проверил

UPD: Соврамши. именно пароль менять не хочет :) Остальное работает.

Пока два варианта:
1. Переместить запись в другой юнит, сменить там пароль и переместить обратно :)
2. Использовать "старый" вариант с ADSI:
$u = Get-ADUser iivanov
$u2 = [ADSI]("LDAP://" + $u.DistinguishedName)
$u2.SetPassword('PassWord123')


Завтра на свежую голову ещё подумаю.
Upd: Пожалуй, других вариантов нет.
Powershell ActiveDirectory использует ActiveDirectoryWebServices, а не System.DirectoryServices, Похоже, это бага ADWS.

Хотя, конечно, ситуация дикая
Ответ написан
@sten82 Автор вопроса
Вот так получилось, спасибо за наводку)

Import-Csv -path C:\bat\users.csv -Delimiter ";" | Foreach {
$u = get-aduser $_.sAMAccountName
$NewPass = $_.NewPassword
$u2 = [adsi]("LDAP://"+$u.DistinguishedName)
$u2.SetPassword($NewPass)
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@NortheR73
системный инженер
Попробуйте обратную черту (`), тогда имя OU будет выглядеть как "...OU=`*it..." (иногда требуется двойная обратная черта - ``), либо комбинацию %2A вместо *
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы