опрос AD по фамилии с последующим запросом
Есть скрипт творящий некоторые безобразия с доменным пользователем. Сделан он был на скорую руку, а теперь захотелось его немного доработать (чисто косметика, так сказать). К пользователю он цепляется по SamAccountName, что задается вот таким макаром:
Код:
Param (
[string]$UserName
)
Хотелось бы сделать приблизительно так: вводим, например, фамилию пользователя (пусть будет $Surname), скрипт выводит нумерованный список совпадений вводим нужный номер выполняется весь остальной скрипт для выбранного пользователя. Т.е. приблизительно так (для пользователя Иванов Петр):
Код:
.\script.ps1 -Surname Иванов
[1] Иванов Иван
[2] Иванов Петр
[3] Иванова Наталья
2
Творим безобразия с Иванов Петр
|
Код:
$users = Get-ADUser -Filter "SurName -eq '$UserName'"
if($users) {
for ($i=1;$i -le $users.count; $i++) {
"[$i] $($users[$i-1].name)"
}
$ans = Read-Host 'Enter selection'
$user = $users[$ans-1]
}
$user
|
Идеально, спасибо. Единственно под себя подправил одну строчку
Код:
$users = Get-ADUser -Filter "SurName -like '$UserName*'"
|
Такая возникла проблема: если пользователь с указываемой фамилией один - ловлю такую ошибку
Код:
Не удается сравнить "1" с "". Ошибка: "Не удается преобразовать значение "Microsoft.ActiveDirectory.Management.ADPropertyValueCollection" типа "Microsoft.ActiveDirectory.Management.ADPropertyValueCollection" в тип "System.Int32"."
D:\ps1\user_sn.ps1:8 знак:12
+ for ($i=1;$i -le $users.count; $i++) {
+ ~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : ComparisonFailure
|
Когда один пользователь возвращается, то будет ошибка.
Код:
$users = @(Get-ADUser -Filter "SurName -eq '$UserName'")
|
Цитата:
Цитата Kazun
Когда один пользователь возвращается, то будет ошибка.
Код:
$users = @(Get-ADUser -Filter "SurName -eq '$UserName'")
»
|
Это вы его принудительно массивом сделали?
|
Цитата:
Цитата za1
Это вы его принудительно массивом сделали? »
|
Ага :).
|
Время: 23:11.
© OSzone.net 2001-