Skapa en anpassad indataruta
Skapa skript för en grafisk anpassad inmatningsruta med hjälp .NET Framework microsofts funktioner för formulärskapande i Windows PowerShell 3.0 och senare versioner.
Skapa en anpassad, grafisk indataruta
Kopiera och klistra in följande i Windows PowerShell ISE och spara det sedan som ett Windows PowerShell skript (.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
}
Skriptet börjar med att läsa in .NET Framework klasser: System.Drawing och System.Windows. Formulär. Sedan startar du en ny instans av .NET Framework klassen System.Windows. Forms.Form; som innehåller ett tomt formulär eller fönster där du kan börja lägga till kontroller.
$form = New-Object System.Windows.Forms.Form
När du har skapat en instans av klassen Form tilldelar du värden till tre egenskaper för den här klassen.
Text. Detta blir fönstrets rubrik.
Storlek. Det här är formulärets storlek i bildpunkter. Föregående skript skapar ett formulär som är 300 bildpunkter brett och 200 bildpunkter högt.
StartingPosition. Den här valfria egenskapen är inställd på CenterScreen i föregående skript. Om du inte lägger till den här egenskapen Windows en plats när formuläret öppnas. Genom att ange StartingPosition till CenterScreen visas formuläret automatiskt i mitten av skärmen varje gång det läses in.
$form.Text = 'Data Entry Form'
$form.Size = New-Object System.Drawing.Size(300,200)
$form.StartPosition = 'CenterScreen'
Skapa sedan en OK-knapp för formuläret. Ange storlek och beteende för knappen OK. I det här exemplet är knapppositionen 120 bildpunkter från formulärets övre kant och 75 bildpunkter från vänsterkanten. Knapphöjden är 23 bildpunkter, medan knapplängden är 75 bildpunkter. Skriptet använder fördefinierade Windows Forms-typer för att fastställa knappbeteenden.
$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)
På samma sätt skapar du en Avbryt-knapp. Knappen Avbryt är 120 bildpunkter uppifrån, men 150 bildpunkter från fönstrets vänstra kant.
$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)
Ange sedan etiketttext i fönstret som beskriver den information som du vill att användarna ska ange.
$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)
Lägg till kontrollen (i det här fallet en textruta) som låter användarna ange den information som du har beskrivit i etiketttexten. Det finns många andra kontroller som du kan använda förutom textrutor. Fler kontroller finns i System.Windows. Namnområde för formulär.
$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)
Ange egenskapen Översta till $true att tvinga fönstret att öppna ovanpå andra öppna fönster och dialogrutor.
$form.Topmost = $true
Lägg sedan till den här kodraden för att aktivera formuläret och ställ in fokus på textrutan som du skapade.
$form.Add_Shown({$textBox.Select()})
Lägg till följande kodrad för att visa formuläret i Windows.
$result = $form.ShowDialog()
Slutligen instruerar koden i If-blocket Windows vad du ska göra med formuläret när användarna har uppsnat text i textrutan och klickar sedan på OK eller trycker på Retur.
if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
$x = $textBox.Text
$x
}