2017-06-22 140 views
1

我想要一個技術輸入用戶名和組名,但在一個輸入框。任何人願意告訴我如何做到這一點?如何在同一個輸入框中輸入多個字段

Function add-togroup{ 

    #Adds members to group in AD 

    #$users = Read-Host "Enter a username" 
    Add-Type -AssemblyName Microsoft.VisualBasic; 
    $value = [Microsoft.VisualBasic.Interaction]::InputBox('Enter username', 
    'Username') 
    $value2 = [Microsoft.VisualBasic.Interaction]::InputBox('Enter group 
    name', 'XA Group','') 
    $group_membership = Get-ADPrincipalGroupMembership $users | select name | 
    format-table -auto 
    foreach($u in $value) 
    { 
     Add-ADGroupMember $value2 -Members $u 
    } 

    Write-Host $group_membership 
} 

所以我能夠按順序使用多個對話框,但它將使一個更好的用戶體驗,如果我能擀成一個單一盒/形式這一點。

+0

你問如何分割一個字符串呢?我不明白你想要什麼或看到試圖改變它。同樣放棄'Format-Table',因爲它沒有爲你做任何有用的事情 – Matt

+0

而不是有兩個單獨的輸入彈出窗口,我想有一個與兩個地方輸入信息。一個用戶名和第二個輸入組 – user770022

+0

阿好。你需要[這樣的事情](https://technet.microsoft.com/en-us/library/ff730941.aspx)。在這種情況下,您需要推出自己的對話框。 – Matt

回答

0

如果您對可用的基本表單不滿意,那麼您擁有的一個選項是使用.Net窗體在PowerShell中展示自己的選項。只是爲了顯示你可以從建立一個例子...

[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") 
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") 

$objForm = New-Object System.Windows.Forms.Form 
$objForm.Text = "Data Entry Form" 
$objForm.Size = New-Object System.Drawing.Size(300,200) 
$objForm.StartPosition = "CenterScreen" 

$objForm.KeyPreview = $True 
$objForm.Add_KeyDown({ 
    if ($_.KeyCode -eq "Enter" -or $_.KeyCode -eq "Escape"){ 
     $objForm.Close() 
    } 
}) 

$OKButton = New-Object System.Windows.Forms.Button 
$OKButton.Location = New-Object System.Drawing.Size(75,120) 
$OKButton.Size = New-Object System.Drawing.Size(75,23) 
$OKButton.Text = "OK" 
$OKButton.Add_Click({$objForm.Close()}) 
$objForm.Controls.Add($OKButton) 

$CancelButton = New-Object System.Windows.Forms.Button 
$CancelButton.Location = New-Object System.Drawing.Size(150,120) 
$CancelButton.Size = New-Object System.Drawing.Size(75,23) 
$CancelButton.Text = "Cancel" 
$CancelButton.Add_Click({$objForm.Close()}) 
$objForm.Controls.Add($CancelButton) 

$objLabel = New-Object System.Windows.Forms.Label 
$objLabel.Location = New-Object System.Drawing.Size(10,20) 
$objLabel.Size = New-Object System.Drawing.Size(280,20) 
$objLabel.Text = "Please enter the information in the space below:" 
$objForm.Controls.Add($objLabel) 

$objTextBox = New-Object System.Windows.Forms.TextBox 
$objTextBox.Location = New-Object System.Drawing.Size(10,40) 
$objTextBox.Size = New-Object System.Drawing.Size(260,20) 
$objForm.Controls.Add($objTextBox) 

$objTextBox2 = New-Object System.Windows.Forms.TextBox 
$objTextBox2.Location = New-Object System.Drawing.Size(10,70) 
$objTextBox2.Size = New-Object System.Drawing.Size(260,20) 
$objForm.Controls.Add($objTextBox2) 

$objForm.Topmost = $True 

$objForm.Add_Shown({$objForm.Activate()}) 
[void]$objForm.ShowDialog() 

$objTextBox.Text 
$objTextBox2.Text 

的借用了great primer on the subject on TechNet,應首先閱讀,因爲它引導你,雖然這更好嚴重。我刪除了一些可變的人口邏輯,因爲它有缺陷並添加了另一個文本框。最後兩行返回由「用戶」輸入的值。除了添加文本框之外,我還將大部分其他外觀修改留給您,以幫助您更好地理解此處涉及的內容。

請記住新添加的對象的位置和大小,並確保將其實際添加到表單中。

由於沒有用於表單構建的GUI,它可能看起來令人生畏,但其實並不那麼難。你只需要做實驗。如果你非常喜歡有第三方工具可以幫助解決這個問題。

相關問題