[Решено] Привязать св-ва к массивам
Есть такая задача:
По ad запрашиваем пользователей (или группы или членство групп не важно что, можно просто файлики), допустим с фильтром - город, на выходе получаем всех пользователей из это города (с нумерацией 1,2,3...), далее выдается запрос от шела «выберете пользователей» чтобы добавить их в массив, (так же через запятую вводим нужные номера пользователей), на выходе массив с выбранными пользователями, как это сделать? |
c4uran, а в чём проблема?
Цитата:
|
Мне нужен интерактив, для создания костыля :(
get-aduser Вывод: 1 Петро 2 Васе 3 Андре $user = введите номер сотрудника: (ввожу 1,3) Получаю: $user = @{ Петро, Андре } |
c4uran, коллега Busla, конечно, пошутил. Создайте форму, поместите на неё ListBox/ListView, выводите туда потребный перечень и делайте в нём выбор, добавьте кнопку, по которой после осуществления выбора будут выполняться потребные действия над выбранными строками.
P.S. Нет, номер, конечно, тоже имеет право на жизнь, если пользователей не будет больше десятка, або двух. |
Никогда не делал ничего подбного, можно пару примеров, там цмдлеты, примеры удачного использования
|
Вроде бы автор и не заикался о сценарии с GUI, речь о самом хосте надо полагать. Тогда проще создать отдельный буфер (по принципу того, как это реализовано в less), отобразить в нем данные, из которых нужно сделать выбор (с прокруткой или без - на выбор), забрать, скажем, select'ом данные после чего отправить данные в основной буфер, а созданный - удалить.
P.S. $user = @{Петро, Андре} - скорее можно схлопотать трейсбек, нежели массив, ибо здесь попытка создать хеш. |
Цитата:
|
Как выше уже сказано, можно использовать Out-GridView с параметром -PassThru для выбора элементов и передачи по конвейеру. Выбор элементов по Ctrl или Shift и длаее нажимаем OK.
Код:
$p = Get-Process | Out-GridView -PassThru Для примера выберем пользователей и у выбранных пользоавателей получим город: Код:
$users = Get-ADUser -Filter "City -like 'Иваново'" -Properties city |
Kazun, не знаю согласитесь вы или нет, но у ps-menu есть один небольшой недостаток: вывод меню селектора в текущий буфер, - хотя через $host сие можно исправить. В выходные постараюсь написать код.
|
Цитата:
|
Цитата:
чтобы Out-GridView возвращал выделенные элементы нужно указать параметр -OutputMode Multiple |
Цитата:
|
Цитата:
value is equivalent to the Passthru parameter. |
Iska, да, тут я не совсем прав. PassThru потому и не обозвали общим параметром, что он для каждого командлета работает по-разному. Я неудачно обобщил свой опыт его использования на все случаи. Для Out-GridView -PassThru - эквивалент -OutputMode Multiple
|
$Users = Get-ADUser -Filter {Enabled -eq $False} | Select -First 10
$Users | Add-Member @{"Num" = 0} -PassThru -Force | Out-Null $i = 1 ; $users | %{ $_.Num = $i ; $i++ } $users | Select Num, Name |
Wheee111, То что нужно, спс
Kazun, Тоже интересное решение, буду тестировать, спасибо |
Время: 15:57. |
Время: 15:57.
© OSzone.net 2001-