PowerShell - Powershell GUI и создание пользователей в AD
-
DJ Mogarych
Re: PowerShell - Powershell GUI и создание пользователей в AD
А не проще делегировать кадровикам создание пользователей в AD и поставить им на компьютеры RSAT?
-
Charg
Re: PowerShell - Powershell GUI и создание пользователей в AD
DJ Mogarych, проще, но как я уже упомянул - цель не делегировать задачу, а научиться в павершелл путем решения какой-нибудь задачи - и эта просто подвернулась под руку.
-
Charg
Re: PowerShell - Powershell GUI и создание пользователей в AD
Как создавать такие элементы?
Как ComboBox и TextBox только без возможности туда что-то вписать (ну и чтоб визуально было понятно что написать туда ничего нельзя.
Скрытый текст
[spoiler]
[/spoiler]
Как ComboBox и TextBox только без возможности туда что-то вписать (ну и чтоб визуально было понятно что написать туда ничего нельзя.
Скрытый текст
[spoiler]
[/spoiler]-
Kazun
Re: PowerShell - Powershell GUI и создание пользователей в AD
Код:
Код: Выделить всё
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()-
Iska
Re: PowerShell - Powershell GUI и создание пользователей в AD
Я бы токмо заменил:
Цитата Kazun:
Код:
на:
Код:
дабы зараз привыкать к правильному стилю написания и пониманию, откуда сие берётся.
Цитата Kazun:
Код:
Код: Выделить всё
$ComboBox.DropDownStyle = "DropDownList"PowerShell - Powershell GUI и создание пользователей в AD
на:
Код:
Код: Выделить всё
$ComboBox.DropDownStyle = [System.Windows.Forms.ComboBoxStyle]::DropDownListдабы зараз привыкать к правильному стилю написания и пониманию, откуда сие берётся.
-
YuS_2
Re: PowerShell - Powershell GUI и создание пользователей в AD
Цитата Iska:
привыкать к правильному стилю написания
На паре форм ни привыкнуть, ни понять, наверное, не получится... тут мануалы по Windows Forms (WF) читать придется, как минимум. А ему сейчас на смену
привыкать к правильному стилю написания
PowerShell - Powershell GUI и создание пользователей в AD
На паре форм ни привыкнуть, ни понять, наверное, не получится... тут мануалы по Windows Forms (WF) читать придется, как минимум. А ему сейчас на смену
дабпиэф
продвигают с более продвинутыми возможностями и функционалом, хотя пока ещё и схожим с WF. Но, как обычно, микрософт поплевал в сторону старой наработки, ибо трудозатратно развивать, и сказал, что будет исправлять и поддерживать, но обновлять и добавлять - ни-ни... такшта, лучше уж сразу на WPF замахиваться, если уж и изучать. 
-
Iska
Re: PowerShell - Powershell GUI и создание пользователей в AD
Цитата Charg:
Почему нужно проверять именно файл? Я вот вижу только минусы.
Проверять данные нужно как на этапе ввода из формы, так и сам файл перед внесением изменений в AD. Последнее можно исключить только в одном случае — если Вы, не генерируя никакого файла, зараз отрабатываете внесение изменений в AD непосредственно из формы.
Почему нужно проверять именно файл? Я вот вижу только минусы.
PowerShell - Powershell GUI и создание пользователей в AD
Проверять данные нужно как на этапе ввода из формы, так и сам файл перед внесением изменений в AD. Последнее можно исключить только в одном случае — если Вы, не генерируя никакого файла, зараз отрабатываете внесение изменений в AD непосредственно из формы.
-
Charg
Re: PowerShell - Powershell GUI и создание пользователей в AD
Как лучше всего экспортировать данные введенные в гуй пользователями в csv?
Я себе это изначально представлял так:
Скрытый текст
[spoiler]Код: [/spoiler]
В результате (как мне хотелось) - появлялись бы по 1-му *.csv файлу на пользователя с именем login.csv.
Но так оно не работает. Проблема в том что командлет new-aduser пробует добавить пользователя в любом случае (для того он всё-таки и нужен), а уже потом если указана опция -passthru - дополнительно шлет данные дальше по конвейеру. И получается что если у пользователя, запускающего скрипт, есть права на добавления пользователя в AD - пользователь добавляется (и шаг с экспортом\импортом становится бессмысленным), а если нету - выдает ошибку (и до экспорта дело не доходит).
Выходит я выбрал неправильный подход к экспорту данных о пользователе. А какие еще могут быть варианты?
Экспортировать я хочу объект со свойствами (1 объект = 1 пользователь), которые в дальнейшем пойдут на вход командлету new-aduser в импортирующий скрипт.
Или шаг с экспортом\импортом вообще тухлая идея и нужно просто нужным людям раздать права на добавление пользователей в AD, поставить им RSAT (чтоб модуль содержащий командлеты для работы с AD установился) и пусть добавляют напрямую из GUI в AD? Так вроде много проще но... я не знаю какие могут быть подводные камни.
Я себе это изначально представлял так:
Скрытый текст
[spoiler]Код: [/spoiler]
Код: Выделить всё
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? Так вроде много проще но... я не знаю какие могут быть подводные камни.