Contenidos
Enunciado 1
Descripción: Crea un script de PowerShell que muestre una lista de todos los procesos en ejecución en el sistema, ordenados por uso de memoria en orden descendente.
Solución:
1 2 |
# Obtener todos los procesos y ordenarlos por uso de memoria en orden descendente Get-Process | Sort-Object -Property WS -Descending |
Enunciado 2
Descripción: Escribe un script de PowerShell que acepte un nombre de archivo como parámetro y muestre el número de líneas, palabras y caracteres en el archivo.
Solución:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
param ( [string]$filePath ) # Verificar si el archivo existe if (Test-Path $filePath) { # Leer el contenido del archivo $content = Get-Content $filePath # Contar el número de líneas $lineCount = $content.Count # Contar el número de palabras $wordCount = ($content -join " " -split "\s+").Count # Contar el número de caracteres $charCount = ($content -join "").Length # Mostrar los resultados Write-Output "Líneas: $lineCount" Write-Output "Palabras: $wordCount" Write-Output "Caracteres: $charCount" } else { Write-Output "El archivo no existe." } |
Enunciado 3
Descripción: Escribe un script de PowerShell que busque archivos en un directorio específico (y sus subdirectorios) que no hayan sido modificados en los últimos 30 días y los mueva a una carpeta de respaldo.
Solución:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
param ( [string]$sourceDir, [string]$backupDir ) # Verificar si los directorios existen if (-Not (Test-Path $sourceDir)) { Write-Output "El directorio de origen no existe." exit } if (-Not (Test-Path $backupDir)) { # Crear el directorio de respaldo si no existe New-Item -ItemType Directory -Path $backupDir } # Obtener la fecha límite (hace 30 días) $limitDate = (Get-Date).AddDays(-30) # Buscar archivos no modificados en los últimos 30 días $files = Get-ChildItem -Path $sourceDir -Recurse | Where-Object { $_.LastWriteTime -lt $limitDate } # Mover los archivos a la carpeta de respaldo foreach ($file in $files) { $destPath = Join-Path $backupDir $file.Name Move-Item -Path $file.FullName -Destination $destPath } |
Enunciado 4
Descripción: Crea un script de PowerShell que verifique si un servicio específico está en ejecución, y si no lo está, intente iniciarlo. Si el servicio no existe, debe mostrar un mensaje apropiado.
Solución:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
param ( [string]$serviceName ) # Obtener el estado del servicio $service = Get-Service -Name $serviceName -ErrorAction SilentlyContinue if ($null -eq $service) { Write-Output "El servicio '$serviceName' no existe." } elseif ($service.Status -ne 'Running') { # Intentar iniciar el servicio Start-Service -Name $serviceName Write-Output "El servicio '$serviceName' se ha iniciado." } else { Write-Output "El servicio '$serviceName' ya está en ejecución." } |
Enunciado 5
Descripción: Escribe un script de PowerShell que genere un informe HTML con una lista de todos los usuarios locales del sistema, incluyendo su nombre completo y la fecha del último inicio de sesión.
Solución:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# Obtener todos los usuarios locales $users = Get-LocalUser # Crear una lista para almacenar la información del informe $userInfo = @() foreach ($user in $users) { $userInfo += [PSCustomObject]@{ 'Nombre de Usuario' = $user.Name 'Nombre Completo' = $user.FullName 'Último Inicio de Sesión' = $user.LastLogon } } # Convertir la lista a HTML $userInfo | ConvertTo-Html -Property 'Nombre de Usuario', 'Nombre Completo', 'Último Inicio de Sesión' -Title 'Informe de Usuarios Locales' -PreContent "<h1>Informe de Usuarios Locales</h1>" | Out-File 'InformeUsuarios.html' Write-Output "Informe generado: InformeUsuarios.html" |