Seguimos con adaptadores y gestión de red script9.ps1 Gestión de Red Menú de gestión de…
Examen práctico PowerShell. Enunciados y soluciones
A continuación os pongo el enunciado del examen de PowerShell para administradores, y la solución aportada por uno de los alumnos, en concreto, Ismael Herrera.
MUY IMPORTANTE: Utilizando los cmdlets propios de PowerShell (NO ALIAS NI COMANDOS DEL CMD), crea utilizando el entorno de Microsoft PowerShell ISE los siguientes scripts:
SCRIPT1 – Redes
Pide el último número de una dirección ip inicial y de dirección ip final y comprueba si dicha IP está o no conectada de la siguiente forma
Ejemplo (para las IPS que hay en clase)
Ipinicial: 50
Ipfinal: 60
IP 172.30.0.50 está CONECTADO
IP 172.30.0.51 está CONECTADO
…
IP 172.30.0.60 NO está CONECTADO
(Ayuda: utiliza el parámetro -quiet con la orden de comprobación de conexión correspondiente)
SOLUCIÓN:
[int]$inicial=Read-Host "Dime el numeró inicial de la IP dento de la red 172.30.0.1" [int]$final=Read-Host "Dime el numeró final de la IP dento de la red 172.30.0.1" for ($i = $inicial; $i -lt $final+1; $i++) { $respuesta=Test-Connection 172.30.3.$i -Count 1 -Quiet if ($respuesta) { Write-Host "172.30.3.$i está Conectado" }else{ Write-Host "172.30.3.$i NO está Conectado" } }
SCRIPT2- Tareas programadas
Script que copia todos los archivos de texto del directorio C:\DATOS al directorio C:\COPIADEDATOS\ (ambos directorios ya existen).
Crea una tarea programada llamada “Copia de txt” del archivo anterior que se ejecute cada día a las 12 del mediodía.
Escribir comandos utilizados para realizar la tarea programada correctamente (están comentados en el programa):
SOLUCIÓN:
Copy-Item C:\DATOS\*.txt C:\COPIADEDATOS\ #$accion=New-ScheduledTaskAction -Execute "powershell.exe" -Argument "C:\Users\alumno\Desktop\SCRIPT2-Tareasprogramadas.ps1" #$disparador=New-ScheduledTaskTrigger -Daily -At 12:00 #Register-ScheduledTask -Action $accion -Trigger $disparador -TaskName "Copia de txt"
SCRIPT3 – Procesos
MENÚ DE PROCESOS
- Ver listado de procesos
- Ver información detallada de un proceso. Pide nombre
- Gestión de procesos
- Salir
Gestión de procesos
- Parar un proceso (pregunta si quiere por nombre o por id y para dicho proceso)
- Iniciar un proceso
- Volver al menú anterior
SOLUCIÓN:
#Inicializo la variable $x=0 #Declaro funciones function listado(){ Clear-Host Get-Process } function detallada(){ Clear-Host $proceso=Read-Host "Dime el nombre del proceso del que quieres información" Get-Process -Name $proceso|fl * } function parar_proceso(){ Clear-Host Write-Host "¿Prefieres nombre o id?" Write-Host "1. Nombre" Write-Host "2. ID" $opcion=Read-Host "Elige opción" if ($opcion -eq 1) { $parar=Read-Host "Dime el nombre del proceso a parar" Stop-Process -Name $parar } if ($opcion -eq 2) { $parar1=Read-Host "Dime el ID del proceso a parar" Stop-Process -Id $parar1 } } function iniciar_proceso(){ Clear-Host $procesoexe=Read-Host "Dime el nombre del proceso que deseas ejecutar" Start-Process $procesoexe } function gestion_procesos(){ #Inicializo variable $y=0 #Inicio menu while ($y -ne "V") { Clear-Host Write-Host "Gestión de procesos" Write-Host " " Write-Host "S. Parar un proceso" Write-Host "I. Iniciar un proceso" Write-Host "V. Volver al menú anterior" $y=Read-Host "Elige una opción" if ($y -eq "S"){parar_proceso} if ($y -eq "I"){iniciar_proceso} if ($y -ne "V") { Read-Host "Pulsa para continuar..." } } } #Inicio de menu while ($x -ne 4) { Clear-Host Write-Host "MENÚ DE PROCESOS" Write-Host " " Write-Host "1.Ver listado de procesos" Write-Host "2.Ver información detallada de un proceso." Write-Host "3.Gestión de procesos" Write-Host "4.Salir" $x=Read-Host "Elige una opción" if ($x -eq 1){listado} if ($x -eq 2){detallada} if ($x -eq 3){gestion_procesos} if ($x -ne 4) { Read-Host "Pulsa para continuar..." } }
SCRIPT4 – WMI-CIM
Información de Hw y Sw
- Procesador
- Placa Base
- BIOS
- Salir
Seleccione opción:
Para cada Elemento, preguntar Nombre? Fabricante? o Detallada? Y muestra información correspondiente
SOLUCIÓN:
#Inicializo la variable $x=0 #Declaro funciones function preguntar($componente){ Clear-Host Write-Host "¿Que quieres ver?" Write-Host "1. Nombre" Write-Host "2. Fabricante" Write-Host "3. Detallada" $opcion=Read-Host "Elige una opción" if ($opcion -eq 1) { Get-WmiObject -Class $componente|ft Name } if ($opcion -eq 2) { Get-WmiObject -Class $componente|ft Manufacturer } if ($opcion -eq 3) { Get-WmiObject -Class $componente|fl * } } #Inicio de menu while ($x -ne 4) { Clear-Host Write-Host "Información de Hw y Sw" Write-Host "" Write-Host "1. Procesador" Write-Host "2. Placa Base" Write-Host "3. BIOS" Write-Host "4. Salir" $x=Read-Host "Seleccione opción" if ($x -eq 1){preguntar("win32_processor")} if ($x -eq 2){preguntar("win32_baseboard")} if ($x -eq 3){preguntar("win32_Bios")} if ($x -ne 4) { Read-Host "Pulsa para continuar" } }
IMPORTANTE: hasta 1 PUNTO ADICIONAL TOTAL si se utilizan funciones de forma adecuada