Skapa en grafisk datumväljare
Använd Windows PowerShell 3.0 och senare versioner för att skapa ett formulär med en grafisk kontroll i kalenderformat som låter användarna välja en dag i månaden.
Skapa en grafisk kontroll för datumväljare
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 Windows.Forms.Form -Property @{
StartPosition = [Windows.Forms.FormStartPosition]::CenterScreen
Size = New-Object Drawing.Size 243, 230
Text = 'Select a Date'
Topmost = $true
}
$calendar = New-Object Windows.Forms.MonthCalendar -Property @{
ShowTodayCircle = $false
MaxSelectionCount = 1
}
$form.Controls.Add($calendar)
$okButton = New-Object Windows.Forms.Button -Property @{
Location = New-Object Drawing.Point 38, 165
Size = New-Object Drawing.Size 75, 23
Text = 'OK'
DialogResult = [Windows.Forms.DialogResult]::OK
}
$form.AcceptButton = $okButton
$form.Controls.Add($okButton)
$cancelButton = New-Object Windows.Forms.Button -Property @{
Location = New-Object Drawing.Point 113, 165
Size = New-Object Drawing.Size 75, 23
Text = 'Cancel'
DialogResult = [Windows.Forms.DialogResult]::Cancel
}
$form.CancelButton = $cancelButton
$form.Controls.Add($cancelButton)
$result = $form.ShowDialog()
if ($result -eq [Windows.Forms.DialogResult]::OK) {
$date = $calendar.SelectionStart
Write-Host "Date selected: $($date.ToShortDateString())"
}
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-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 Windows.Forms.Form -Property @{
StartPosition = [Windows.Forms.FormStartPosition]::CenterScreen
Size = New-Object Drawing.Size 243, 230
Text = 'Select a Date'
Topmost = $true
}
I det här exemplet tilldelas värden till fyra egenskaper för den här klassen med hjälp av egenskapen Egenskap och hashtabellen.
StartPosition: Om du inte lägger till den här egenskapen Windows en plats när formuläret öppnas. Genom att ange den här egenskapen till CenterScreen visar du automatiskt formuläret i mitten av skärmen varje gång det läses in.
Storlek: Det här är formulärets storlek i bildpunkter. Föregående skript skapar ett formulär som är 243 bildpunkter brett med 230 bildpunkter högt.
Text: Detta blir fönstrets rubrik.
Längst upp: Genom att ange den här egenskapen till kan du tvinga
$truefönstret att öppna ovanpå andra öppna fönster och dialogrutor.
Skapa sedan och lägg sedan till en kalenderkontroll i formuläret. I det här exemplet är den aktuella dagen inte markerad eller inringad. Användare kan bara välja en dag i kalendern i taget.
$calendar = New-Object Windows.Forms.MonthCalendar -Property @{
ShowTodayCircle = $false
MaxSelectionCount = 1
}
$form.Controls.Add($calendar)
Skapa sedan en OK-knapp för formuläret. Ange storlek och beteende för knappen OK. I det här exemplet är knapppositionen 165 bildpunkter från formulärets övre kant och 38 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 Windows.Forms.Button -Property @{
Location = New-Object Drawing.Point 38, 165
Size = New-Object Drawing.Size 75, 23
Text = 'OK'
DialogResult = [Windows.Forms.DialogResult]::OK
}
$form.AcceptButton = $okButton
$form.Controls.Add($okButton)
På samma sätt skapar du en Avbryt-knapp. Knappen Avbryt är 165 bildpunkter uppifrån, men 113 bildpunkter från fönstrets vänstra kant.
$cancelButton = New-Object Windows.Forms.Button -Property @{
Location = New-Object Drawing.Point 113, 165
Size = New-Object Drawing.Size 75, 23
Text = 'Cancel'
DialogResult = [Windows.Forms.DialogResult]::Cancel
}
$form.CancelButton = $cancelButton
$form.Controls.Add($cancelButton)
Lägg till följande kodrad för att visa formuläret i Windows.
$result = $form.ShowDialog()
Slutligen instruerar koden inuti blocket Windows vad du ska göra med formuläret när användarna har valt en dag i kalendern och sedan klickar på OK eller trycker på if Retur. Windows PowerShell visar det valda datumet för användarna.
if ($result -eq [Windows.Forms.DialogResult]::OK) {
$date = $calendar.SelectionStart
Write-Host "Date selected: $($date.ToShortDateString())"
}