Crear un selector de fecha gráfico
Use Windows PowerShell 3.0 (y versiones posteriores) para crear un formulario con un control gráfico de estilo de calendario que permita a los usuarios seleccionar un día del mes.
Crear un control gráfico de selector de fecha
Copie y pegue lo siguiente en Windows PowerShell ISE y, después, guárdelo como un script de Windows PowerShell (.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())"
}
El script comienza con la carga de dos clases de .NET Framework: System.Drawing y System.Windows.Forms. A continuación, inicie una nueva instancia de la clase de .NET Framework Windows.Forms.Form, que proporciona un formulario o ventana en blanco en la que puede empezar a agregar controles.
$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
}
En este ejemplo se asignan valores a cuatro propiedades de esta clase mediante la propiedad Property y la tabla hash.
StartPosition: Si no agrega esta propiedad, Windows selecciona una ubicación cuando el formulario se abre. Al establecer esta propiedad en CenterScreen, el formulario aparece automáticamente en el centro de la pantalla cada vez que se carga.
Size: Es el tamaño del formulario en píxeles. El script anterior crea un formulario de 243 píxeles de ancho y 230 píxeles de alto.
Text: Es el título de la ventana.
Topmost: Al establecer esta propiedad en
$true, puede forzar a que la ventana se abra encima del resto de ventanas y cuadros de diálogo abiertos.
A continuación, cree un control de calendario y agréguelo al formulario. En este ejemplo, el día actual no está resaltado o dentro de un círculo. Los usuarios pueden seleccionar un solo día en el calendario cada vez.
$calendar = New-Object Windows.Forms.MonthCalendar -Property @{
ShowTodayCircle = $false
MaxSelectionCount = 1
}
$form.Controls.Add($calendar)
A continuación, cree un botón Aceptar para el formulario. Indique un tamaño y el comportamiento del botón Aceptar. En este ejemplo, la posición del botón es de 165 píxeles desde el borde superior del formulario y de 38 píxeles desde el borde izquierdo. La altura del botón es 23 píxeles y la longitud, 75 píxeles. El script usa tipos predefinidos de Windows Forms para definir el comportamiento del botón.
$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)
De manera similar, cree un botón Cancelar. El botón Cancelar está a 165 píxeles de la parte superior, pero a 113 píxeles del borde izquierdo de la ventana.
$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)
Agregue la siguiente línea de código para mostrar el formulario en Windows.
$result = $form.ShowDialog()
Por último, el código del bloque if indica a Windows qué hacer con el formulario después de que los usuarios seleccionen un día en el calendario y hagan clic en el botón Aceptar o presionen la tecla Entrar. Windows PowerShell muestra la fecha seleccionada a los usuarios.
if ($result -eq [Windows.Forms.DialogResult]::OK) {
$date = $calendar.SelectionStart
Write-Host "Date selected: $($date.ToShortDateString())"
}