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

  1. Ver listado de procesos
  2. Ver información detallada de un proceso. Pide nombre
  3. Gestión de procesos
  4. Salir

 

Gestión de procesos

  1. Parar un proceso (pregunta si quiere por nombre o por id y para dicho proceso)
  2. Iniciar un proceso
  3. 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

  1. Procesador
  2. Placa Base
  3. BIOS
  4. 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

Sé el primero en comentar

Deja un comentario