Ejercicios Resueltos de PowerShell: Automatización de Tareas en Windows
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 4,68 KB
1. Verificar la Existencia de un Usuario en el Sistema
Este script de PowerShell solicita el nombre de un usuario y verifica si existe en el sistema local.
$usuario = Read-Host "Introduce el nombre de usuario"
if (Get-LocalUser | Where-Object {$_.Name -like $usuario}) {
Write-Host "El usuario existe"
} else {
Write-Host "El usuario no existe"
}
2. Monitorizar el Estado de Conexión de Equipos en la Red
Este script modifica el ejercicio anterior para integrar la verificación de estado de conexión de varios equipos, determinando si están en línea o apagados.
$google = Test-NetConnection -ComputerName "www.google.com" | Where-Object {$_.PingSucceeded -like "*True*"}
$lopedevega = Test-NetConnection -ComputerName "www.academialopedevega.org" | Where-Object {$_.PingSucceeded -like "*True*"}
$pc = Test-NetConnection -ComputerName "172.16.6.1" | Where-Object {$_.PingSucceeded -like "*True*"}
if ($google) {
Write-Output "google activo"
} else {
Write-Output "google no activo"
}
if ($lopedevega) {
Write-Output "Lope de Vega activo"
} else {
Write-Output "Lope de Vega no activo"
}
if ($pc) {
Write-Output "172.16.6.1 activo"
} else {
Write-Output "172.16.6.1 no activo"
}
3. Guardar el Contenido del Portapapeles en un Archivo de Texto
Este script utiliza un bucle infinito para monitorear el portapapeles del sistema. Guarda su contenido en un archivo de texto con el formato de nombre dd-mm-yy.txt. El contenido se acumula en el archivo.
$fecha = Get-Date -Format dd-MM-yy
while (1) {
$comprobar = Get-Clipboard
Start-Sleep -Seconds 1
if ($comprobar) {
$comprobar | Out-File -FilePath "C:\Users\pablo\Desktop\$($fecha).txt" -Append
}
}
4. Buscar Palabras Clave en un Archivo de Texto
Este script busca palabras clave específicas (como "pin", "password", "banco", etc.) en un archivo generado previamente. Si encuentra alguna coincidencia, muestra un mensaje con la fecha y hora.
$palabras = "pin", "password", "pass", "banco", "cuenta", "ES", "euro"
while (1) {
if (Get-Content C:\Users\pablo\Desktop\02-02-18.txt | Select-String -Pattern $palabras) {
Write-Output "Palabras encontradas $(Get-Date)"
break
} else {
Write-Output "Palabras no encontradas"
}
}
5. Detectar la Ejecución de MSPaint, Registrarla y Cerrarla
Este script monitorea continuamente si se ha abierto la aplicación MSPaint. Cuando detecta su ejecución, anota la fecha en un archivo y, después de 5 minutos, cierra la aplicación.
$fecha = Get-Date -Format D
while (1) {
$proceso = Get-Process -Name "mspaint" -ErrorAction SilentlyContinue
if ($proceso) {
$fecha | Out-File -FilePath "C:\Users\pablo\Desktop\paint.txt" -Append
Start-Sleep -Seconds 300
Stop-Process -Name "mspaint"
break
}
}
6. Montar una Carpeta Compartida en una Unidad de Red
Este script verifica si la unidad X:
está en uso. Si está libre, monta una carpeta compartida desde un servidor NAS en dicha unidad.
if (Get-PSDrive -Name x -ErrorAction SilentlyContinue) {
Write-Output "La unidad está en uso"
} else {
New-PSDrive -Name "x" -PSProvider FileSystem -Root "\\172.16.6.1\Public\isos" -Persist
}
7. Descargar e Instalar Aplicaciones desde URLs en un Archivo de Texto
Este script lee una lista de URLs desde el archivo descargas.txt, descarga cada archivo y procede a su instalación.
$urls = Get-Content C:\Users\pablo\Desktop\descargas.txt
$contador = 1
foreach ($url in $urls) {
Invoke-WebRequest -Uri $url -OutFile "C:\Users\pablo\Desktop\descargas\$($contador).exe"
& "C:\Users\pablo\Desktop\descargas\$($contador).exe"
$contador++
}
8. Descargar e Instalar Aplicaciones Selectivamente
Este script modifica el ejercicio anterior para permitir la instalación selectiva de aplicaciones. El archivo descargas.txt debe contener un campo adicional que indique con true
si la URL debe ser instalada o no.
$descargas = Get-Content C:\Users\pablo\Desktop\descargas.txt
$contador = 1
foreach ($linea in $descargas) {
$campos = $linea -split ","
$url = $campos[0]
$instalar = $campos[1]
if ($instalar -eq "true") {
Invoke-WebRequest -Uri $url -OutFile "C:\Users\pablo\Desktop\descargas\$($contador).exe"
& "C:\Users\pablo\Desktop\descargas\$($contador).exe"
$contador++
} else {
Write-Output "Descarga omitida para $($url)"
}
}