Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] опрос AD по фамилии с последующим запросом (http://forum.oszone.net/showthread.php?t=336681)

Elven 14-09-2018 12:39 2831314

опрос AD по фамилии с последующим запросом
 
Есть скрипт творящий некоторые безобразия с доменным пользователем. Сделан он был на скорую руку, а теперь захотелось его немного доработать (чисто косметика, так сказать). К пользователю он цепляется по SamAccountName, что задается вот таким макаром:
Код:

Param (
[string]$UserName
)

Хотелось бы сделать приблизительно так: вводим, например, фамилию пользователя (пусть будет $Surname), скрипт выводит нумерованный список совпадений вводим нужный номер выполняется весь остальной скрипт для выбранного пользователя. Т.е. приблизительно так (для пользователя Иванов Петр):
Код:

.\script.ps1 -Surname Иванов
[1] Иванов Иван
[2] Иванов Петр
[3] Иванова Наталья
2
Творим безобразия с Иванов Петр


Kazun 14-09-2018 12:54 2831316

Код:

$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


Elven 14-09-2018 13:27 2831321

Идеально, спасибо. Единственно под себя подправил одну строчку
Код:

$users = Get-ADUser -Filter "SurName -like '$UserName*'"

Elven 11-10-2018 10:41 2835389

Такая возникла проблема: если пользователь с указываемой фамилией один - ловлю такую ошибку
Код:

Не удается сравнить "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


Kazun 11-10-2018 10:54 2835394

Когда один пользователь возвращается, то будет ошибка.
Код:

$users = @(Get-ADUser -Filter "SurName -eq '$UserName'")

za1 11-10-2018 12:25 2835409

Цитата:

Цитата Kazun
Когда один пользователь возвращается, то будет ошибка.
Код:

$users = @(Get-ADUser -Filter "SurName -eq '$UserName'")
»

Это вы его принудительно массивом сделали?

Iska 11-10-2018 19:57 2835470

Цитата:

Цитата za1
Это вы его принудительно массивом сделали? »

Ага :).


Время: 23:11.

Время: 23:11.
© OSzone.net 2001-