PowerShell: Menú de usuario

Parece que PowerShell esta llamado a ser el reemplazo al clásico interfaz de comando DOS de toda la vida. Puede ser de especial utilidad para administrar AD (Active Directory) y realizar tareas rutinarias como bloquear usuarios, cambiar la clave de una cuenta o crear reportes para conocer la “salud” de nuestra red corporativa .

Lo primero y más evidente que necesito es un menú de administrador para abordar la tarea de titan de hacer un super script que abarque todo:

  • Cuentas
    • Bloquear cuenta
    • Establecer nueva clave de cuenta
  • Reportes
    • Cuentas que no se ha logeado hace mas de X meses por ejemplo.
  • Grupos de seguridad
  • ….

Creamos una función sencilla ‘show_ppal_menu‘  para mostrar el menú con las opciones de usuario. Usamos el comando ‘cls‘ para limpiar la pantalla y escribir las opciones de usuario.


function show_ppal_menu
{
param (
[string]$Title = 'Menú administración AD'
)
cls
Write-Host "================ $Title ================"

Write-Host "1: Cuentas."
Write-Host "2: Reportes."
Write-Host "Q: Press 'Q' to quit."
}

Las funciones en PowerShell tienen la siguiente sintaxis:

function <name> \{ <script block> \}

A continuación de la declaración de la función con su nombre entre llaves { y } definimos los comandos que queremos ejecutar cuando llamemos a la función desde otro punto de nuestro script.

Ahora que ya tenemos la función que muestra el menú de opciones necesitamos invocarla para mostrar al usuario, cuando el usuario selecciona una opción por su número ejecutaremos el código asociado a la opción y volvemos a mostrar el menú.

Usamos un bucle do/while para mostrar el menú y ejecutar la opción de forma continua hasta que el usuario pulse la tecla ‘q’ para salir del bucle.

Usamos una sentencia switch para tomar la decisión del código que queremos ejecutar según la opción seleccionada.


do
{
show_ppal_menu
$input = Read-Host "Selecciona una opción"
switch ($input)
{
'1' {
cls
'Has seleccionado la opción #1'
} '2' {
cls
'Has seleccionado la opción #2'
} 'q' {
return
}
}
pause
}
until ($input -eq 'q')

Guardamos el código en un fichero ‘menu_user_opts.ps1‘ y ya estamos listos para probarlo.

 

 

 

 

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s