Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Powershell GUI и создание пользователей в AD

Ответить
Настройки темы
PowerShell - Powershell GUI и создание пользователей в AD

Аватара для Charg

Ветеран


Сообщения: 2798
Благодарности: 469


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: Charg
Дата: 14-01-2019
Начинаю понемногу изучать Powershell, и решил сразу сделать что-то полезное - например делегировать создание учетки в AD отделу HR.
Поскольку давать доступ к серверам им, понятное дело, никто не будет - решил сделать такую схему:
1. гуй на павершеле всю введенную инфу экспортирует в csv.
2. со стороны сервера второй скрипт импортирует этот csv и распихивает все ранее введенные данные по параметрам к командлету new-aduser.
И в итоге мне остается только включить учетку, опционально присвоить пароль, раздать права и т.д. А все задрочки "как там правильно называется должность вот этого человека которого надо добавить в АД" отпадут.

В общем нашел такой сайтец https://poshgui.com/Editor, накидал примерную форму.
Но так и не понял как достать введенное в TextBox значение и использовать его далее?

Отправлено: 14:10, 04-01-2019

 

Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Смотреть, как устроены примеры:

1. Arposh
http://blog.richprescott.com/2011/10...tion-anuc.html
https://github.com/RichPrescott/UserCreation



2. Z-Hire
Z-Hire Active Directory, Exchange, Lync, Office 365 User Creation Tool - https://gallery.technet.microsoft.co...ionin-e4854d6b


Отправлено: 14:50, 04-01-2019 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Charg

Ветеран


Сообщения: 2798
Благодарности: 469

Профиль | Отправить PM | Цитировать


Kazun, второй вариант не на павершеле а первый строит GUI с помощью XML. В принципе тоже вариант, попробую и так, но он менее удобен тем что придется всё вручную писать.
Но исходный вопрос остается открытым - как работать с введенным в TextBox значением?
Может под спойлер картинки то?


Чтоб говорить предметно - вот есть такая формочка:
Код: Выделить весь код
<# This form was created using POSHGUI.com  a free online gui designer for PowerShell
.NAME
    Untitled
#>

Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.Application]::EnableVisualStyles()

$Form                            = New-Object system.Windows.Forms.Form
$Form.ClientSize                 = '350,250'
$Form.text                       = "Form"
$Form.TopMost                    = $false

$TextBox                         = New-Object system.Windows.Forms.TextBox
$TextBox.multiline               = $false
$TextBox.text                    = "Textbox content"
$TextBox.width                   = 100
$TextBox.height                  = 20
$TextBox.location                = New-Object System.Drawing.Point(150,50)
$TextBox.Font                    = 'Microsoft Sans Serif,10'

$label                           = New-Object system.Windows.Forms.Label
$label.text                      = "useless text"
$label.AutoSize                  = $true
$label.width                     = 25
$label.height                    = 10
$label.location                  = New-Object System.Drawing.Point(150,100)
$label.Font                      = 'Microsoft Sans Serif,10'

$Button1                         = New-Object system.Windows.Forms.Button
$Button1.text                    = "button"
$Button1.width                   = 60
$Button1.height                  = 30
$Button1.location                = New-Object System.Drawing.Point(174,194)
$Button1.Font                    = 'Microsoft Sans Serif,10'
$Button1.Add_Click({ fApply })

function fApply {
   $Form.TextBox.text = $Form.label.text
}

$Form.controls.AddRange(@($TextBox,$label,$Button1))
$Form.ShowDialog()
По задумке как это должно работать - есть TextBox, в нём уже введен полезный текст "Textbox content".
Ниже есть Label в котором написано useless text. По нажатию на кнопку "useless text" должен поменяться на "Textbox content"
Павершелл выдает ошибку:
Код: Выделить весь код
The property 'text' cannot be found on this object. Verify that the property exists and can be set.
At line:39 char:4
+    $Form.label.text = $Form.TextBox.text
+    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : PropertyNotFound

Последний раз редактировалось Charg, 04-01-2019 в 16:05.


Отправлено: 15:36, 04-01-2019 | #3


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
function fApply {
   $Label.text = $TextBox.text
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:45, 04-01-2019 | #4


Старожил


Сообщения: 247
Благодарности: 49

Профиль | Отправить PM | Цитировать


5 лет назад написал статью в codeproject про разные windows forms, wpf и повершел - посмотрите может что пригодится - 130 k views :-)
http://www.codeproject.com/Articles/...asic-Windows-F
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:02, 04-01-2019 | #5


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Charg:
Павершелл выдает ошибку: »
Так нет у формы, на которую ссылается переменная $Form, свойств label и textbox. Вы можете, например, дать имена надписи и полю ввода в основной части кода (задать свойства .Name у надписи и поля ввода):
Код: Выделить весь код
$TextBox.Name = "MyTextBox"
…
$label.Name = "MyLabel"
а в функции обработки ссылаться на элементы управления по этим заданным именам, наподобие:
Код: Выделить весь код
function fApply {
    $Form.Controls.Item("MyLabel").text = $Form.Controls.Item("MyTextBox").text
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:29, 04-01-2019 | #6


Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


Цитата Charg:
Поскольку давать доступ к серверам им, понятное дело, никто не будет »
по-моему, вы не понимаете как работает AD
и как следствие не стоит браться автоматизировать то, что непонятно как работает

Цитата Charg:
1. гуй на павершеле всю введенную инфу экспортирует в csv. »
а чего бы им не заполнять табличку в привычном excel, вместо сомнительного самопального GUI?

Отправлено: 11:40, 05-01-2019 | #7


Аватара для Charg

Ветеран


Сообщения: 2798
Благодарности: 469

Профиль | Отправить PM | Цитировать


Цитата Busla:
по-моему, вы не понимаете как работает AD
и как следствие не стоит браться автоматизировать то, что непонятно как работает »
А по-моему - понимаю.
Ну либо конструктивнее как-нибудь, пожалуйста.

Цитата Busla:
а чего бы им не заполнять табличку в привычном excel»
Потому что контент экселя еще парсить нужно, в то время как в результате экспорта и импорта в\из csv павершел работает с объектом; далее в ячейку можно записать всякое разное ненужное, файлик можно случайно удалить, и куча других причин. Короче говоря - защита от дурака.

Цитата Busla:
вместо сомнительного самопального GUI? »
Изначально задачи автоматизировать процесс нет. Я этим занялся чтобы Powershell изучить, на примере какого-нибудь реального мини-проекта который бы в работе помогал и по мере углубления в PS дорабатывался\оптимизировался\переделывался.
И я прекрасно понимаю что уже есть решения, что они работают, что они отлаженные и более функциональные. Но если просто скачать какой-то скрипт из интернета и запустить даблкликом - ничему не научишься.

Последний раз редактировалось Charg, 05-01-2019 в 13:20.


Отправлено: 13:01, 05-01-2019 | #8


Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


Charg, чтобы вносить изменения в AD не нужно по RDP конектиться к контроллеру домена
Если компьютер в домене и пользователь - доменный - у него уже все необходимые "доступы к серверам". И даже (по умолчанию) права на создание некоторых новых объектов в домене.

Цитата Charg:
контент экселя еще парсить нужно, в то время как в результате экспорта и импорта в\из csv »
Приложение excel прекрасно умеет сохранять данные в формат csv

Цитата Charg:
в ячейку можно записать всякое разное ненужное, файлик можно случайно удалить, и куча других причин. Короче говоря - защита от дурака »
csv генерируемый вашим скриптом очевидно "можно случайно удалить" ровно так же ;-)
равно как и в поле формы вписать ненужное
вообще надеяться на проверку в форме - наивно. Нужно проверять корректность именно файла, и в нём ещё раз прочекать корректность/допустимость всех значений.

Отправлено: 16:22, 05-01-2019 | #9


Аватара для Charg

Ветеран


Сообщения: 2798
Благодарности: 469

Профиль | Отправить PM | Цитировать


Цитата Busla:
чтобы вносить изменения в AD не нужно по RDP конектиться к контроллеру домена
Если компьютер в домене и пользователь - доменный - у него уже все необходимые "доступы к серверам". »
Я в курсе, просто так выразился для краткости.
Цитата Busla:
И даже (по умолчанию) права на создание некоторых новых объектов в домене. »
А вот этого я не знал. Какие объекты и в каком контейнере могут создавать простые пользователи по умолчанию?
Цитата Busla:
csv генерируемый вашим скриптом очевидно "можно случайно удалить" ровно так же ;-) »
Ну, фактически права есть, да, но если скрипт запускается пользователем с ярлыка на рабочем столе - маловероятно что кто-то полезет смотреть на содержимое скрипта и выискивать по какому пути сохраняется этот csv.
Цитата Busla:
равно как и в поле формы вписать ненужное
вообще надеяться на проверку в форме - наивно. Нужно проверять корректность именно файла, и в нём ещё раз прочекать корректность/допустимость всех значений. »
Почему нужно проверять именно файл? Я вот вижу только минусы.
Юзер, введя какое-то недопустимое значение в форму, должен сразу увидеть о том что что-то не так и ввести вместо этого корректное значение, что говорит о том что проверка на ввод в форме должна быть. А раз она там есть - какой смысл дублировать её еще и на импортирующей стороне?

Отправлено: 17:32, 05-01-2019 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Powershell GUI и создание пользователей в AD

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - GUI PowerShell - помогите понять пару моментов UpDaTe Скриптовые языки администрирования Windows 3 27-11-2012 23:44
Разное - Зависает GUI Bibelwort Microsoft Windows 2000/XP 5 26-08-2011 08:27
Не работает GUI после выхода другова GUI sashadeg AutoIt 3 15-05-2009 22:03
c++ с gui sad koder Программирование и базы данных 3 16-06-2004 08:51
Мplayer -gui kitov Программное обеспечение Linux и FreeBSD 11 10-06-2003 09:15




 
Переход