Een aangepast invoervak maken
Script een grafisch aangepast invoervak met behulp van Microsoft .NET Framework functies voor het bouwen van Windows PowerShell 3.0 en latere versies.
Een aangepast, grafisch invoervak maken
Kopieer en plak het volgende in Windows PowerShell ISE en sla het vervolgens op als een Windows PowerShell script (.ps1).
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$form = New-Object System.Windows.Forms.Form
$form.Text = 'Data Entry Form'
$form.Size = New-Object System.Drawing.Size(300,200)
$form.StartPosition = 'CenterScreen'
$okButton = New-Object System.Windows.Forms.Button
$okButton.Location = New-Object System.Drawing.Point(75,120)
$okButton.Size = New-Object System.Drawing.Size(75,23)
$okButton.Text = 'OK'
$okButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $okButton
$form.Controls.Add($okButton)
$cancelButton = New-Object System.Windows.Forms.Button
$cancelButton.Location = New-Object System.Drawing.Point(150,120)
$cancelButton.Size = New-Object System.Drawing.Size(75,23)
$cancelButton.Text = 'Cancel'
$cancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form.CancelButton = $cancelButton
$form.Controls.Add($cancelButton)
$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(10,20)
$label.Size = New-Object System.Drawing.Size(280,20)
$label.Text = 'Please enter the information in the space below:'
$form.Controls.Add($label)
$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Location = New-Object System.Drawing.Point(10,40)
$textBox.Size = New-Object System.Drawing.Size(260,20)
$form.Controls.Add($textBox)
$form.Topmost = $true
$form.Add_Shown({$textBox.Select()})
$result = $form.ShowDialog()
if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
$x = $textBox.Text
$x
}
Het script begint met het laden van twee .NET Framework klassen: System.Drawing en System.Windows. Formulieren. Vervolgens start u een nieuw exemplaar van de .NET Framework klasse System.Windows. Forms.Form; dat een leeg formulier of venster bevat waaraan u besturingselementen kunt toevoegen.
$form = New-Object System.Windows.Forms.Form
Nadat u een exemplaar van de klasse Form hebt maken, wijst u waarden toe aan drie eigenschappen van deze klasse.
Tekst. Dit wordt de titel van het venster.
Grootte. Dit is de grootte van het formulier, in pixels. Met het voorgaande script wordt een formulier gemaakt dat 300 pixels breed en 200 pixels lang is.
StartingPosition. Deze optionele eigenschap wordt in het voorgaande script ingesteld op CenterScreen. Als u deze eigenschap niet toevoegt, selecteert Windows een locatie wanneer het formulier wordt geopend. Door StartingPosition in te stellen op CenterScreen, wordt het formulier automatisch weergegeven in het midden van het scherm telkens wanneer het wordt geladen.
$form.Text = 'Data Entry Form'
$form.Size = New-Object System.Drawing.Size(300,200)
$form.StartPosition = 'CenterScreen'
Maak vervolgens een knop OK voor uw formulier. Geef de grootte en het gedrag van de knop OK op. In dit voorbeeld is de positie van de knop 120 pixels van de bovenrand van het formulier en 75 pixels vanaf de linkerrand. De hoogte van de knop is 23 pixels, terwijl de knoplengte 75 pixels is. Het script maakt gebruik van vooraf gedefinieerde Windows formuliertypen om het gedrag van de knop te bepalen.
$okButton = New-Object System.Windows.Forms.Button
$okButton.Location = New-Object System.Drawing.Point(75,120)
$okButton.Size = New-Object System.Drawing.Size(75,23)
$okButton.Text = 'OK'
$okButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $OKButton
$form.Controls.Add($OKButton)
Op dezelfde manier maakt u een knop Annuleren. De knop Annuleren is 120 pixels vanaf de bovenkant, maar 150 pixels vanaf de linkerrand van het venster.
$cancelButton = New-Object System.Windows.Forms.Button
$cancelButton.Location = New-Object System.Drawing.Point(150,120)
$cancelButton.Size = New-Object System.Drawing.Size(75,23)
$cancelButton.Text = 'Cancel'
$cancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form.CancelButton = $cancelButton
$form.Controls.Add($cancelButton)
Geef vervolgens labeltekst op in het venster met de informatie die gebruikers moeten verstrekken.
$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(10,20)
$label.Size = New-Object System.Drawing.Size(280,20)
$label.Text = 'Please enter the information in the space below:'
$form.Controls.Add($label)
Voeg het besturingselement toe (in dit geval een tekstvak) waarmee gebruikers de informatie kunnen verstrekken die u in de labeltekst hebt beschreven. Er zijn veel andere besturingselementen die u naast tekstvakken kunt toepassen; Zie System.Windows voor meer besturingselementen. Formuliernaamruimte.
$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Location = New-Object System.Drawing.Point(10,40)
$textBox.Size = New-Object System.Drawing.Size(260,20)
$form.Controls.Add($textBox)
Stel de eigenschap Topmost in op $true om af te dwingen dat het venster wordt geopend op andere geopende vensters en dialoogvensters.
$form.Topmost = $true
Voeg vervolgens deze regel code toe om het formulier te activeren en stel de focus in op het tekstvak dat u hebt gemaakt.
$form.Add_Shown({$textBox.Select()})
Voeg de volgende coderegel toe om het formulier weer te geven in Windows.
$result = $form.ShowDialog()
Ten slotte geeft de code in het blok Als aan Windows wat er met het formulier moet worden doen nadat gebruikers tekst in het tekstvak hebben verstrekt. Klik vervolgens op de knop OK of druk op Enter.
if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
$x = $textBox.Text
$x
}