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

Компьютерный форум 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

 

Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


А не проще делегировать кадровикам создание пользователей в AD и поставить им на компьютеры RSAT?

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


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



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

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


Аватара для Charg

Ветеран


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

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


DJ Mogarych, проще, но как я уже упомянул - цель не делегировать задачу, а научиться в павершелл путем решения какой-нибудь задачи - и эта просто подвернулась под руку.

Отправлено: 21:03, 05-01-2019 | #12


Аватара для Charg

Ветеран


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

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


Как создавать такие элементы?
Как ComboBox и TextBox только без возможности туда что-то вписать (ну и чтоб визуально было понятно что написать туда ничего нельзя.
Скрытый текст

Последний раз редактировалось Charg, 06-01-2019 в 15:25.


Отправлено: 14:59, 06-01-2019 | #13


Ветеран


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

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


Код: Выделить весь код
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName PresentationFramework
[System.Windows.Forms.Application]::EnableVisualStyles()

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

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

$ComboBox                       = New-Object system.Windows.Forms.ComboBox
$ComboBox.text                  = "comboBox"
$ComboBox.width                 = 100
$ComboBox.height                = 20
$ComboBox.location              = New-Object System.Drawing.Point(150,81)
$ComboBox.Font                  = 'Microsoft Sans Serif,10'
$ComboBox.DropDownStyle         = "DropDownList"
$ComboBox.Items.AddRange(@(
    "One","Two","Three","Four"
))

$Button                          = New-Object System.Windows.Forms.Button
$Button.Location                 = New-Object System.Drawing.Point(150, 120)
$Button.Size                     = New-Object System.Drawing.Size(98, 23)
$Button.Text                     = "Output"
$Button.add_Click({[System.Windows.MessageBox]::Show($ComboBox.SelectedItem.ToString())})

$Form.controls.AddRange(@($ComboBox,$TextBox,$Button))
$Form.ShowDialog()

Последний раз редактировалось Kazun, 06-01-2019 в 15:40.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:33, 06-01-2019 | #14


Ветеран


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

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


Я бы токмо заменил:
Цитата Kazun:
Код: Выделить весь код
$ComboBox.DropDownStyle = "DropDownList"
»
на:
Код: Выделить весь код
$ComboBox.DropDownStyle         = [System.Windows.Forms.ComboBoxStyle]::DropDownList
дабы зараз привыкать к правильному стилю написания и пониманию, откуда сие берётся.
Это сообщение посчитали полезным следующие участники:

Отправлено: 01:32, 07-01-2019 | #15


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата Iska:
привыкать к правильному стилю написания »
На паре форм ни привыкнуть, ни понять, наверное, не получится... тут мануалы по Windows Forms (WF) читать придется, как минимум. А ему сейчас на смену дабпиэф продвигают с более продвинутыми возможностями и функционалом, хотя пока ещё и схожим с WF. Но, как обычно, микрософт поплевал в сторону старой наработки, ибо трудозатратно развивать, и сказал, что будет исправлять и поддерживать, но обновлять и добавлять - ни-ни... такшта, лучше уж сразу на WPF замахиваться, если уж и изучать.

-------
scio me nihil scire. Ѫ

Это сообщение посчитали полезным следующие участники:

Отправлено: 07:33, 07-01-2019 | #16


Ветеран


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

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


Цитата Charg:
Почему нужно проверять именно файл? Я вот вижу только минусы. »
Проверять данные нужно как на этапе ввода из формы, так и сам файл перед внесением изменений в AD. Последнее можно исключить только в одном случае — если Вы, не генерируя никакого файла, зараз отрабатываете внесение изменений в AD непосредственно из формы.

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


Аватара для Charg

Ветеран


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

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


Как лучше всего экспортировать данные введенные в гуй пользователями в csv?
Я себе это изначально представлял так:
Скрытый текст
Код: Выделить весь код
function fButtonClick {

# user-defined variables
    [string]$name           = $givenNameTextBox.text
    [string]$surname        = $snTextBox.text
    [string]$fullname       = "$surname $name"
    [string]$title          = $titleTextBox.text
    [string]$dept           = $departmentTextBox.text
    [string]$company        = $companyTextBox.text
    [string]$login          = $loginTextBox.text
    [string]$emailaddress   = "$login" + "@" + "$domainoption1"
    [string]$upn            = "$login$domainsuffix"

    $ADParams = @{
            Path = $ADPath
            Name = $fullname
            GivenName = $name
            Surname = $surname
            DisplayName = $fullname
            Company = $company
            Department = $dept
            Title = $title
            SamAccountName = $login
            EmailAddress = $emailaddress
            UserPrincipalName = $upn
            }
# save user with all params as an object inside csv
New-ADUser @ADParams -PassThru | Export-Csv -Path ("$exportPath"+'\'+"$login"+".csv") -Encoding UTF8

	}

В результате (как мне хотелось) - появлялись бы по 1-му *.csv файлу на пользователя с именем login.csv.
Но так оно не работает. Проблема в том что командлет new-aduser пробует добавить пользователя в любом случае (для того он всё-таки и нужен), а уже потом если указана опция -passthru - дополнительно шлет данные дальше по конвейеру. И получается что если у пользователя, запускающего скрипт, есть права на добавления пользователя в AD - пользователь добавляется (и шаг с экспортом\импортом становится бессмысленным), а если нету - выдает ошибку (и до экспорта дело не доходит).
Выходит я выбрал неправильный подход к экспорту данных о пользователе. А какие еще могут быть варианты?
Экспортировать я хочу объект со свойствами (1 объект = 1 пользователь), которые в дальнейшем пойдут на вход командлету new-aduser в импортирующий скрипт.

Или шаг с экспортом\импортом вообще тухлая идея и нужно просто нужным людям раздать права на добавление пользователей в AD, поставить им RSAT (чтоб модуль содержащий командлеты для работы с AD установился) и пусть добавляют напрямую из GUI в AD? Так вроде много проще но... я не знаю какие могут быть подводные камни.

Отправлено: 14:55, 14-01-2019 | #18



Компьютерный форум 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




 
Переход