miércoles, 16 de octubre de 2013

Ejercicios PowerShell

Ejercicio 4

2- Crea un cmdlet que recoja como parámetro un nombre de directorio. Verifica que ese directorio exista. Luego debes listar los contenidos del directorio ordenados por tamaño, y de cada elemento debes sacar el tamaño y el nombre.
# recogerParam.ps1
$nombreDir = $args[1]
$comprobar = Test-Path $nombreDir
if ($comprobar -eq $true){
    Get-ChildItem $nombreDir | Sort-Object size
}

3- Crea un cmdlet llamado CheckPorts que defina un array con los puertos que queremos que estén en listening. Ejecuta el comando para sacar los puertos y verifica que están abiertos los indicados en el array. Vete sacando un mensaje que indique qué puertos están correctamente en estado listening y cuáles no.
$ip = "127.0.0.1" # ip del host
$puertos = 20,21,22,23,24,25,80
$con = New-Object net.Sockets.TcpClient
foreach ($port in $puertos)
{
 try{
  $con.Connect($ip,$port)
  $con.Close()
  Write-Output "Puerto $port en listening."
 }
 catch{
  Write-Output "Puerto $port cerrado."
 }
}

# fin del programa

4- Crea un cmdlet llamado AlertDist que defina un array relacional con las unidades y el límite de capacidad. Debe ejecutarse un comando que saque el tamaño ocupado en las unidades y que nos avise si se ha superado el límite impuesto.
$unidades = Get-WmiObject Win32_logicaldisk | select -Property DeviceID,FreeSpace
foreach ($libre in $unidades){
 $id = $libre.DeviceID
 $espacio = $libre.FreeSpace
 Write-Output "La unidad $id tiene $espacio de espacio libre."
}

# fin del programa

5- Crea un cmdlet de PowerShell que defina un array relacional con usuarios. Los campos de cada elemento deben ser nombre_cuenta, nombre y password. El programa debe mantener ese array con un menú en el que se pueda:
-añadir
-eliminar
-buscar por nombre
-mostrar todos
Al crear uno nuevo deben solicitarse datos y el campo password debe ocultarse al escribir.
$alumnos = @{
              "juan" = @{ nombre_cuenta = "juan_20"; nombre = "juan"; password = "2345";};
              "eneko" = @{ nombre_cuenta = "eneko_23"; nombre = "eneko"; password = "3456";};
              "urko" = @{ nombre_cuenta = "urko_33"; nombre = "urko"; password = "4567";}
            }
do {
 Write-Output "---- MENU ----"
 Write-Output "1. Añadir alumno"
 Write-Output "2. Eliminar alumno"
 Write-Output "3. Buscar por nombre"
 Write-Output "4. Mostrar alumnos"
 Write-Output "5. Salir"
 $op = Read-Host "Selecciona opción: "
 switch ($op){
   1{
     Write-Output "Vas a añadir un alumno."
     $nombre = Read-Host "Introduce un nombre: "
     $nombre_cuenta = Read-Host "Introduce un nombre de cuenta: "
     $password = Read-Host "Introduce una contraseña: "
     $alumnoNuevo = @{ nombre_cuenta = $nombre_cuenta; nombre = $nombre; password = $password;}
     $alumnos = $alumnos + $alumnoNuevo
    }
   2{
     foreach ($alumno in $alumnos.GetEnumerator()){
      Write-Output $alumno.name
     }
     $opElim = Read-Host "Mete el nombre del que quieras eliminar: "
     $alumnos.Remove($opElim);
    }
   3{
     $opBuscar = Read-Host "Mete el nombre del que quieras buscar: "
     $sino = 0
     foreach ($alum in $alumnos.GetEnumerator()){
      if ($alum.name -eq $opBuscar){
       Write-Output "El usuario existe."
       $sino = 1
      }
     }
     if ($sino -eq 0){
      Write-Output "El usuario no existe."
     }
    }
   4{
     Write-Output "Alumnos existentes: "
     foreach ($alumno in $alumnos.GetEnumerator()){
      Write-Output $alumno.name
     }
    }
   5{ 
     Write-Output "Saliendo del programa..."
     exit
    }
   default{
     Write-Output "Opción incorrecta."
   }
  }
} while ($op -ne 4)

# fin del programa

No hay comentarios:

Publicar un comentario