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
