Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieses Beispiel gilt nur für Windows-Plattformen.
Verwenden Sie ein grafisches benutzerdefiniertes Eingabefeld mit Microsoft .NET Framework-Formularerstellungsfeatures in Windows PowerShell 3.0 und höheren Versionen.
Erstellen eines benutzerdefinierten grafischen Eingabefelds
Kopieren Sie folgendes, fügen Sie es in Windows PowerShell ISE ein und speichern Sie es dann als PowerShell-Skriptdatei (.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
}
Das Skript lädt zunächst zwei .NET Framework-Klassen: System.Drawing und System.Windows.Forms. Anschließend starten Sie eine neue Instanz der .NET Framework-Klasse System.Windows.Forms.Form. Dies stellt ein leeres Formular oder Fenster bereit, dem Sie mit dem Hinzufügen von Steuerelementen beginnen können.
$form = New-Object System.Windows.Forms.Form
Nachdem Sie eine Instanz der Form-Klasse erstellt haben, weisen Sie drei Eigenschaften dieser Klasse Werte zu.
- Text. Dies wird zum Titel des Fensters.
- Größe. Dies ist die Größe des Formulars in Pixeln. Das vorherige Skript erstellt ein Formular mit einer Breite von 300 Pixeln um 200 Pixel hoch.
- Anfangsposition. Diese optionale Eigenschaft ist auf CenterScreen- im vorherigen Skript festgelegt. Wenn Sie diese Eigenschaft nicht hinzufügen, wählt Windows beim Öffnen des Formulars einen Speicherort aus. Wenn Sie die StartingPosition auf CenterScreenfestlegen, wird das Formular bei jedem Laden automatisch in der Mitte des Bildschirms angezeigt.
$form.Text = 'Data Entry Form'
$form.Size = New-Object System.Drawing.Size(300,200)
$form.StartPosition = 'CenterScreen'
Erstellen Sie als Nächstes eine schaltfläche OK für Ihr Formular. Geben Sie die Größe und das Verhalten der Schaltfläche OK an. In diesem Beispiel beträgt die Schaltflächenposition 120 Pixel vom oberen Rand des Formulars und 75 Pixel vom linken Rand. Die Schaltflächenhöhe beträgt 23 Pixel, während die Länge der Schaltfläche 75 Pixel beträgt. Das Skript verwendet vordefinierte Windows Forms-Typen, um das Verhalten der Schaltfläche zu bestimmen.
$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)
In entsprechender Weise erstellen Sie eine Schaltfläche Abbrechen. Die Abbrechen-Schaltfläche ist 120 Pixel vom oberen und 150 Pixel vom linken Rand des Fensters entfernt.
$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)
Geben Sie als Nächstes Beschriftungstext in Ihrem Fenster an, der die Informationen beschreibt, die Benutzer bereitstellen möchten.
$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)
Fügen Sie das Steuerelement (in diesem Fall ein Textfeld) hinzu, mit dem Benutzer die Informationen bereitstellen können, die Sie in Ihrem Beschriftungstext beschrieben haben. Es gibt viele andere Steuerelemente, die Sie neben Textfeldern anwenden können. Weitere Steuerelemente finden Sie unter System.Windows.Forms-Namespace.
$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)
Legen Sie die Topmost-Eigenschaft auf $true fest, um zu erzwingen, dass das Fenster über anderen geöffneten Fenstern und Dialogfeldern angezeigt wird.
$form.Topmost = $true
Fügen Sie als Nächstes diese Codezeile hinzu, um das Formular zu aktivieren, und legen Sie den Fokus auf das von Ihnen erstellte Textfeld fest.
$form.Add_Shown({$textBox.Select()})
Fügen Sie die folgende Codezeile hinzu, um das Formular in Windows anzuzeigen.
$result = $form.ShowDialog()
Schließlich weist der Code im if
-Block Windows an, was mit dem Formular zu tun ist, nachdem Benutzer Text im Textfeld angegeben haben und dann auf die Schaltfläche OK klicken oder die EINGABETASTE drücken.
if ($result -eq [System.Windows.Forms.DialogResult]::OK) {
$x = $textBox.Text
$x
}