La corrección está integrada en el TP (Ver los recuadros verdes)
Lo que vas a aprender en este TP
- Descubrir los cmdlets con Get-Command y Get-Member
- Filtrar, ordenar y exportar objetos
- Escribir un script con parámetros y ejecutarlo en remoto
Introducción #
Lo que vas a aprender en esta sección
- Descubrir los cmdlets con Get-Command y Get-Member
- Filtrar, ordenar y exportar objetos
- Escribir un script con parámetros y ejecutarlo en remoto
Contexto. Tu responsable te pide un estado de los servidores antes de una migración. En lugar de hacer clic en cada consola, escribes un script de inventario reutilizable.
Requisitos: una máquina virtual Windows Server 2025 desechable (evaluación gratuita) con una cuenta de administrador, y PowerShell abierto como administrador · Duración estimada: 45 min
Un scriptInventaire.ps1, un informe CSV y una página HTML.Puesta en marcha #
Pasos guiados, con su corrección.
1. Preparar el espacio de trabajo
¿Por qué? Una carpeta dedicada evita mezclar scripts e informes.
CreaC:\TP\ScriptsyC:\TP\Rapports, comprueba la versión de PowerShell y permite los scripts locales.Ver la corrección
New-Item -ItemType Directory C:\TP\Scripts, C:\TP\Rapports -Force $PSVersionTable.PSVersion Set-ExecutionPolicy RemoteSigned -Scope LocalMachine -Force Get-ExecutionPolicy -List2. Explorar el sistema
¿Por qué? Get-Member muestra las propiedades disponibles antes de seleccionarlas.
Muestra el nombre, la versión, la compilación, la memoria total y el último arranque del servidor.Ver la corrección
Get-CimInstance Win32_OperatingSystem | Get-Member -MemberType Property | Select-Object -First 15 $os = Get-CimInstance Win32_OperatingSystem $cs = Get-CimInstance Win32_ComputerSystem [pscustomobject]@{ Nom = $env:COMPUTERNAME Systeme = $os.Caption Build = $os.BuildNumber RAM_Go = [math]::Round($cs.TotalPhysicalMemory / 1GB, 1) Demarrage = $os.LastBootUpTime }3. Discos y servicios
¿Por qué? Las dos causas de incidente más frecuentes: disco lleno y servicio detenido.
Lista los volúmenes con su porcentaje libre y luego los servicios automáticos que no se están ejecutando.Ver la corrección
Get-Volume | Where-Object DriveLetter | Select-Object DriveLetter, FileSystemLabel, @{n='Taille_Go'; e={[math]::Round($_.Size/1GB,1)}}, @{n='Libre_pct'; e={[math]::Round(100*$_.SizeRemaining/$_.Size,1)}} Get-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' } | Select-Object Name, DisplayName, Status4. Escribir el script
¿Por qué? Un script con parámetros se reutiliza y se ejecuta en remoto.
EscribeC:\TP\Scripts\Inventaire.ps1que devuelva un objeto por servidor (sistema, RAM, disco C libre, número de servicios automáticos detenidos, última actualización).Ver la corrección
@' [CmdletBinding()] param() $os = Get-CimInstance Win32_OperatingSystem $c = Get-Volume -DriveLetter C [pscustomobject]@{ Serveur = $env:COMPUTERNAME Systeme = $os.Caption RAM_Go = [math]::Round((Get-CimInstance Win32_ComputerSystem).TotalPhysicalMemory/1GB,1) C_Libre_pct = [math]::Round(100*$c.SizeRemaining/$c.Size,1) ServicesArretes = (Get-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' }).Count DernierCorrectif = (Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 1).HotFixID } '@ | Set-Content C:\TP\Scripts\Inventaire.ps1 -Encoding UTF8 & C:\TP\Scripts\Inventaire.ps15. Generar los informes
¿Por qué? El CSV se abre en una hoja de cálculo, el HTML se comparte.
Exporta el resultado en CSV y HTML con fecha enC:\TP\Rapports.Ver la corrección
$stamp = Get-Date -Format 'yyyy-MM-dd_HHmm' $inv = & C:\TP\Scripts\Inventaire.ps1 $inv | Export-Csv "C:\TP\Rapports\inventaire_$stamp.csv" -NoTypeInformation -Encoding UTF8 $inv | ConvertTo-Html -Title 'Inventaire' -PreContent "<h1>Inventaire du $stamp</h1>" | Set-Content "C:\TP\Rapports\inventaire_$stamp.html" -Encoding UTF8 Get-ChildItem C:\TP\Rapports6. Ejecutar en remoto
¿Por qué? Invoke-Command consulta varios servidores en paralelo.
Ejecuta el script en el servidor local y en una segunda máquina (olocalhostdos veces si solo tienes una) y reúne los resultados.Ver la corrección
Enable-PSRemoting -Force $cibles = 'localhost', $env:COMPUTERNAME Invoke-Command -ComputerName $cibles -FilePath C:\TP\Scripts\Inventaire.ps1 | Select-Object * -ExcludeProperty RunspaceId | Sort-Object C_Libre_pct | Format-Table -AutoSize
Nivel de dificultad : ●○○○○ (1/5)
Mi seguimiento
Inicia sesión para seguir tu progreso y tomar notas. Iniciar sesión
💬 Preguntas sobre esta lección
Todavía no hay preguntas: sé el primero en pedir ayuda o compartir tu configuración.
Artículos recomendados
PowerShell pour l’administrateur Windows
Maîtriser PowerShell pour administrer Windows : cmdlets et aide, pipeline d'objets, filtres et fo...
Windows et Windows Server : versions, éditions et architecture
Découvrir l'écosystème Windows pour l'administrateur : Windows 11 et Windows Server 2025, édition...
Utilisateurs, groupes, autorisations NTFS et partages SMB
Gérer les comptes et groupes locaux, comprendre UAC, appliquer des autorisations NTFS avec hérita...
Active Directory Domain Services et DNS
Comprendre et déployer Active Directory : forêt, domaines, unités d'organisation, contrôleurs de ...
Stratégies de groupe (GPO) : configurer le parc depuis Active Directory
Concevoir et dépanner les stratégies de groupe : configuration ordinateur et utilisateur, liaison...
Stockage Windows : disques, volumes, Storage Spaces et RAID
Administrer le stockage sous Windows : GPT et MBR, partitions et volumes en PowerShell, NTFS et R...
Réseau Windows : IP, DNS, DHCP, pare-feu et accès à distance
Configurer et diagnostiquer le réseau sous Windows en PowerShell, déployer un serveur DHCP, maîtr...
Services, tâches planifiées, journaux d’événements et performances
Piloter les services Windows et leur récupération, automatiser avec le planificateur de tâches, e...
Mises à jour et sécurité Windows : WSUS, Defender, BitLocker, LAPS et durcissement
Maintenir et sécuriser un parc Windows : stratégie de mises à jour (Windows Update, WSUS, Azure U...