4. Ejericicios PowerShell
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.
------------------------------------------------------------------------------------------------------------
# Introduce un directorio que muestre la información de su contenido en orden de tamaño mostrando el nombre y el tamaño
# Miguel Revuelta
$i=0
while ($i -eq 0)
{
Write-Output "Introduce el directorio"
$direc= Read-Host
if (Test-Path $direc)
{ $i=1 }
else { Write-Output "El directorio no existe." }
}
#muestra el contenido del directorio, solo el tamaño y el nombre y lo ordena por tamaño.
cd $direc
Get-ChildItem | Select-Object length, name | Sort-Object -Descending length
cd..
------------------------------------------------------------------------------------------------------------
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.
------------------------------------------------------------------------------------------------------------
#Mostar los puertos abiertos
$Puertos=Get-NetTCPConnection #| Where-Object -FilterScript {$_.state -eq "listen"}
#Write-Output $Puertos
Write-Output "Los puertos que estan abiertos son:"
for($i=0;$i -lt $puertos.length;$i++)
{
if ($Puertos[$i].State -eq "listen")
{
Write-Output "Este puerto esta abierto: " $Puertos[$i]
}else{
Write-Output $puertos[$i]
}
}
------------------------------------------------------------------------------------------------------------
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
------------------------------------------------------------------------------------------------------------
#Write-Output "Introduce el espacio minimo que tiene que tener libre (GB): "
#$espacio= Read-Host
#$espacio=$espacio*1000000
#Write-Output $espacio
$Unidades=Get-PSDrive | select root, used, free
Write-Output $Unidades.Length
for ($unid=0;$unid -lt $Unidades.Length;$unid++) {
$tamaño=$Unidades[$unid].free
#Write-Output $tamaño
if ($Unidades[$unid].root -ne "" -and $Unidades[$unid].root -ne "\")
{
if ($Unidades[$unid].free -lt 2000000)#$espacio)
{
Write-Output $Unidades[$unid].root "tiene poco espacio libre. Espacio libre: "$Unidades[$unid].free
}
else
{
Write-Output $Unidades[$unid].root "tiene espacio libre. Espacio libre: "$Unidades[$unid].free
}
}
}
------------------------------------------------------------------------------------------------------------
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.
------------------------------------------------------------------------------------------------------------
#Gestion de usuario
$tabla_usuario=@{
"Juan"=@{nombre="juan";cuenta="juan";contrasena="12345678"};
"Pablo"=@{nombre="Pablo";cuenta="Pablo";contrasena="12345678"};
"Ana"=@{nombre="Ana";cuenta="Ana";contrasena="12345678"}
}
$valor=0
while ($valor -ne 5)
{
Write-Output "Menu de gestion de un usuario"
Write-Output "-----------------------------------------"
Write-Output " 1 Crear un usuario"
Write-Output " 2 Borrar un usuario"
Write-Output " 3 Buscar un usuario"
Write-Output " 4 Mostar todos los usuarios"
Write-Output " 5 Salir"
$valor=Read-Host
switch($valor)
{
1 { Write-Output " Crear usuario"
Write-Output "-----------------------------------------"
# $verdadero=0
#comprobamos que el nuevo usuario no existe
#Introducimos los datos en la tabla de usuarios
Write-Output "Introduce el nombre del usuario: "
$usuario=Read-Host
Write-Output "Introduce la cuenta de usuario:"
$cuenta=Read-Host
Write-Output "Introduce la contraseña de usuario:"
$contra=Read-Host
$tabla_usuario=@{$usuario=@{nombre=$usuario;cuenta=$cuenta;contrasena=$contra}}
}
2 {
Write-Output " Borrar usuario"
Write-Output "-----------------------------------------"
write-output "Introduce el usuario que quieres eliminar."
$usuario= read-host
#Write-Output $tabla_usuario[$usuario].Values
if($tabla_usuario.ContainsKey($usuario)) {
write-output " El usuario se ha eliminado:"
$tabla_usuario.Remove($usuario)
}else
{
Write-Output "El usuario introducido no existe"
}
}
3 {
Write-Output " Buscar usuario"
Write-Output "-----------------------------------------"
write-output "Introduce el usuario que quieres buscar."
$usuario= read-host
if($tabla_usuario.ContainsKey($usuario)) {
write-output " El usuario buscado es:"
Write-Output $usuario.key
write-output $($usuario.Value["cuenta"])
write-output $($usuario.Value["contrasena"])
Write-Output "-----------------------------------------"
}else
{
Write-Output "El usuario introducido no existe"
}
}
4 {
Write-Output " Mostar usuarios"
Write-Output "-----------------------------------------"
foreach($usuario in $tabla_usuario.GetEnumerator())
{
Write-Output $usuario.key
write-output $($usuario.Value["cuenta"])
write-output $($usuario.Value["contrasena"])
Write-Output "-----------------------------------------"
}
}
}
}
Write-Output " Has salido del programa."
------------------------------------------------------------------------------------------------------------
No hay comentarios:
Publicar un comentario