Ejercicios Prácticos de PowerShell para Gestión de Archivos, Procesos y Servicios
Clasificado en Informática
Escrito el en
español con un tamaño de 8,05 KB
Bloque 1: Gestión de Archivos y Directorios
Crea una **estructura de directorios** llamada
prueba\prueba01dentro deDocuments, considerando que estás situado enc:\.New-Item -Path "C:\Users\$env:USERNAME\Documents\prueba\prueba01" -ItemType Directory -ForceComando para situarte en **prueba01**. Después, crea tres carpetas llamadas **dir1**, **dir2** y **dir3**, y seis archivos con nombres (ej.
arc01.txt,arc02.txt, etc.) utilizando un solo comando por tipo.Set-Location "$env:USERPROFILE\Documents\prueba\prueba01"New-Item -Name dir1, dir2, dir3 -ItemType DirectoryNew-Item -Name arc01.txt, arc02.txt, arc03.txt, arc04.txt, arc05.txt, arc06.txt -ItemType FileCrea una variable
$usu_ficheroque contenga todos los archivos y carpetas dentro deprueba, incluyendo **subdirectorios**.$usu_fichero = Get-ChildItem "$env:USERPROFILE\Documents\prueba" -RecurseCrea una variable
$usu_txtque contenga solo los archivos con extensión.txtdentro deprueba01.$usu_txt = Get-ChildItem "$env:USERPROFILE\Documents\prueba\prueba01" -Filter *.txtAñade al archivo
arc01.txtel siguiente contenido: “Yo inventé el control zeta”.Add-Content -Path ".\arc01.txt" -Value "Yo inventé el control zeta"Añade al archivo
arc02.txtla **fecha actual** con un solo comando.Get-Date | Out-File -Append .\arc02.txtAñade al archivo
arc03.txtel listado de todos los **procesos del sistema**.Get-Process | Out-File -FilePath .\arc03.txtSobrescribe el contenido de
arc01.txtcon la lista de archivos y carpetas deC:\Windows.Get-ChildItem C:\windows | Set-Content .\arc01.txtEmpleando
$usu_fichero, muestra el nombre de los ficheros que tengan extensión.txt.$usu_fichero | Where-Object {$_.Extension -eq ".txt"} | Select-Object NameCrea en la carpeta
pruebauna subcarpeta **prueba02** y copia en ella todos los ficheros deprueba01.New-Item -Path "$env:USERPROFILE\Documents\prueba\prueba02" -ItemType DirectoryCopy-Item "$env:USERPROFILE\Documents\prueba\prueba01\*" "$env:USERPROFILE\Documents\prueba\prueba02"Desde la carpeta
prueba, guarda en la variable **$usu_carpeta** todos los recursos (archivos y carpetas) que contiene, incluyendo subdirectorios.Set-Location "$env:USERPROFILE\Documents\prueba"$usu_carpeta = Get-ChildItem -RecurseDesde
$usu_carpeta, muestra los archivos cuyo nombre comience por la letra “d”.$usu_carpeta | Where-Object {$_.Name -match "^d"} | Select-Object NameDesde
$usu_carpeta, obtén los archivos cuyo nombre termine en **números**.$usu_carpeta | Where-Object {$_.Name -match '[0-9]$'}Desde
$usu_carpeta, elimina los archivos cuyo nombre comience por la letra “a”.$usu_carpeta | Where-Object {$_.Name -match '^a'} | Remove-ItemMuestra todos los archivos de la carpeta
pruebacuyo **tamaño sea menor de 100 bytes**.Get-ChildItem -Recurse | Where-Object { -not $_.PSIsContainer -and $_.Length -lt 100 }
Bloque 2: Gestión de Servicios y Procesos
Muestra todos los servicios cuyo nombre comience por la letra “d”.
Get-Service | Where-Object {$_.Name -like "d*" }Muestra los servicios que comiencen por “d” y estén **detenidos**.
Get-Service | Where-Object {$_.Name -like "d*" -and $_.Status -eq "Stopped"}Repite el ejercicio anterior, pero formatea la salida en **modo lista**.
Get-Service | Where-Object {$_.Name -like "d*" -and $_.Status -eq "Stopped"} | Format-ListMuestra las propiedades **Name**, **Status**, **StartType** y **CanStop** de todos los servicios en formato lista.
Get-Service | Format-List Name, Status, StartType, CanStopMuestra los nombres de los servicios que **se pueden detener**.
Get-Service | Where-Object {$_.CanStop} | Select-Object NameMuestra los procesos en ejecución con su nombre en **mayúsculas**.
Get-Process | Foreach-Object {$_.Name.ToUpper()}Muestra los **5 procesos que más memoria** estén utilizando.
Get-Process | Sort-Object -Property WorkingSet -Descending | Select-Object -First 5 Name, WorkingSetMuestra los procesos cuyo nombre contenga **más de 10 caracteres**.
Get-process | Where-Object {$_.Name.Length -gt 10} | Select-Object NameMuestra solo el nombre y estado de los servicios que estén en **ejecución**.
Get-Service | Where-Object {$_.Status -eq "Running"} | Select-Object name,statusMuestra los servicios cuyo nombre contenga la palabra “update”, ordenados por **estado**.
Get-Service -name *update* | Sort-Object StatusMuestra todos los servicios del sistema.
Get-ServiceMuestra solo los nombres de los servicios en **orden alfabético**.
Get-Service | Sort-Object Name | Select-Object -ExpandProperty NameCuenta cuántos servicios hay en total.
(Get-Service).CountMuestra los nombres de los procesos en ejecución convertidos a **minúsculas**.
Get-Process | ForEach-Object {$_.Name.ToLower()}Muestra el nombre de los procesos cuyo nombre termine en “host”.
Get-Process | Where-Object {$_.Name -match "host$"} | Select-Object Name
Bloque 3: Operaciones Avanzadas con Archivos
Desde una variable con archivos
.txt, muestra sus nombres en **mayúsculas** usandoForEach-Object.$usu_txt | ForEach-Object {$_.Name.ToUpper()}Muestra el nombre y la **fecha de último acceso** de los archivos, ordenados por tamaño.
Get-ChildItem | Sort-Object Length | Select-Object Name, LastAccessTimeMuestra los ficheros cuyo tamaño sea **mayor de 2 MB**.
Get-Childitem -File | Where-Object {$_.Length -gt 2MB}Muestra el nombre, la fecha de creación y el **día de la semana** en que se crearon los ficheros
.pdf, todo separado por guiones.Get-ChildItem -Filter *.pdf | ForEach-Object {"$($_.Name) - $($_.CreationTime) - $($_.CreationTime.DayOfWeek)"}Muestra el nombre y el tamaño de todos los ficheros cuyo tamaño sea **menor de 10 KB**, excluyendo directorios.
Get-ChildItem -File | Where-Object {$_.Length -lt 10KB} | Select-Object Name, LengthPara los archivos **mayores de 100 KB** en
C:\Windows, muestra su nombre, fecha de último acceso y tamaño.Get-ChildItem C:\Windows -File -Recurse -ErrorAction SilentlyContinue | Where-Object {$_.Length -gt 100KB} | Select-Object Name, LastAccessTime, LengthDesde una variable con archivos y carpetas, muestra el nombre de cada elemento seguido de si es un “Fichero” o un “Directorio”.
$items = Get-ChildItem$items | ForEach-Object {if ($_.PSIsContainer) {"$($_.Name) - Directorio"} else {"$($_.Name) - Fichero"}}