2015-08-18 5 views
1

Я пытаюсь получить окно ввода, чтобы побудить пользователя ввести группу вместо жесткого ее кодирования. Заранее спасибо.Powershell Inputbox

$users = gc "C:\Users\raw.admin\Documents\PowerShell Scripts\users_list.txt" 

foreach($u in $users) 
{ 
    Add-ADGroupMember XA-MS_Products -Members $u 
} 

Я нашел этот snipit из чужого кода, но я не уверен, как адаптировать его за то, что я хочу.

function point ($x,$y) 
{ 
    New-Object Drawing.Point $x,$y 
} 

[reflection.assembly]::LoadWithPartialName("System.Drawing") > $null 
[reflection.assembly]::LoadWithPartialName("System.Windows.Forms") > $null 

$form = New-Object Windows.forms.form 
$form.text = "Drive Space Results" 
$form.size = point 600 400 

$label1 = New-Object Windows.forms.Label 
$label1.location = point 225 25 
$label1.size = point 300 25 
$label1.text = "MASTER DOMAIN ONLY" 


$label2 = New-Object Windows.forms.Label 
$label2.location = point 25 75 
$label2.size = point 120 100 
$label2.text = "Enter Server Name:" 

$input1 = New-Object Windows.forms.TextBox 
$input1.location = point 150 75 
$input1.size = point 350 75 


$run = New-Object Windows.forms.Button 
$run.text="RUN" 
$run.Location = point 150 120 
$run.size = point 100 50 
$run.add_click({ 
    runCall($input1.text) 
}) 

$exit = New-Object Windows.forms.Button 
$exit.text="EXIT" 
$exit.Location = point 300 120 
$exit.size = point 100 50 
$exit.add_click({ 
    $form.close() 
}) 

$out = New-Object Windows.forms.TextBox 
$out.location = point 25 200 
$out.size = point 525 150 
$out.Anchor = "bottom" 
$out.Multiline = $true 

$form.controls.addrange(($label1,$label2,$input1,$run,$exit,$out)) 
$form.add_shown({$form.Activate()}) 
$form.ShowDialog() 
+0

вот [статья TechNet] (https://technet.microsoft.com/en-us/library/Ff730941.aspx) который показывает вам основы использования winform из powershell. Ваш код выше выглядит аналогичным: я думаю, что все, что вам нужно, это изменить '$ form.ShowDialog()' to '[void] $ form.ShowDialog()' и добавить новую строку, например '$ x', чтобы сохранить вход пользователя в переменную ('$ x' в этом случае) – DrewJordan

ответ

1

Я предлагаю вам избегать использования пользовательской формы, она требует много кода, просто использовать по умолчанию InputBox. Вот быстрый пример

Add-Type -AssemblyName Microsoft.VisualBasic; 
$value = [Microsoft.VisualBasic.Interaction]::InputBox('Enter group name', 'XA Group', '') 

В $value вы найдете текст пользователь вошел

+0

Это делает то, что я хочу. Благодарю. – user770022

+0

добро пожаловать – Naigel

+0

Можете ли вы рассказать мне, как пользователю образец кода, который я разместил? – user770022

0

Т.е.

$users = gc "C:\Users\raw.admin\Documents\PowerShell Scripts\users_list.txt" 
    $group = Read-Host "Enter Group To Display" 

    foreach($u in $users) 
    { 
     Add-ADGroupMember -Identity $group -Members $u 
    } 
+0

Это один из вариантов, но мне бы очень хотелось узнать, как представить пользователю всплывающее окно. Нет причин, по которым ваш ответ не будет работать. Я довольно новичок в Powershell и хотел бы добавить кое-что к сценариям, которые я создаю. – user770022

Смежные вопросы