PowerShell pour administrateurs
PowerShell est le shell moderne de Windows Server. Sur un VPS HolyCloud, il permet d'automatiser la gestion des services, du réseau, des utilisateurs et des mises à jour sans passer uniquement par l'interface graphique.
Prérequis
- Session RDP ou console sur le VPS Windows
- Compte membre du groupe Administrators
- Politique d'exécution adaptée (voir ci-dessous)
Lancer PowerShell en administrateur
- Menu Démarrer → tapez PowerShell.
- Clic droit → Exécuter en tant qu'administrateur.
Vérifiez la version :
$PSVersionTable.PSVersion
Get-Host | Select-Object Version
PowerShell 5.1 est inclus par défaut ; PowerShell 7 (pwsh) peut être installé en parallèle pour les scripts cross-plateforme.
Politique d'exécution des scripts
Get-ExecutionPolicy -List
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
RemoteSigned : scripts locaux autorisés ; scripts téléchargés doivent être signés.
Navigation et fichiers
Get-Location
Set-Location C:\inetpub\wwwroot
Get-ChildItem -Force
New-Item -Path 'C:\Logs' -ItemType Directory
Copy-Item 'C:\source\app.config' -Destination 'C:\app\'
Remove-Item 'C:\Temp\old.log' -Force
Informations système
Get-ComputerInfo | Select-Object CsName, WindowsProductName, OsBuildNumber, OsLastBootUpTime
Get-CimInstance Win32_Processor | Select-Object Name, NumberOfLogicalProcessors
Get-CimInstance Win32_OperatingSystem | Select-Object TotalVisibleMemorySize, FreePhysicalMemory
Get-Volume
Services Windows
Get-Service | Where-Object { $_.Status -eq 'Running' } | Sort-Object DisplayName
Get-Service W3SVC, TermService
Restart-Service W3SVC -Force
Stop-Service 'Spooler' -Force
Set-Service 'Spooler' -StartupType Disabled
Processus et performances
Get-Process | Sort-Object CPU -Descending | Select-Object -First 10 Name, CPU, WS
Stop-Process -Name 'notepad' -Force -ErrorAction SilentlyContinue
Get-Counter '\Processor(_Total)\% Processor Time' -SampleInterval 2 -MaxSamples 5
Réseau
Get-NetIPAddress -AddressFamily IPv4 | Where-Object { $_.IPAddress -notlike '127.*' }
Get-NetTCPConnection -State Listen | Select-Object LocalAddress, LocalPort, OwningProcess
Test-NetConnection -ComputerName 8.8.8.8 -Port 53
Resolve-DnsName www.holycloud.fr
Utilisateurs locaux
Get-LocalUser
$Secure = Read-Host -AsSecureString 'Nouveau mot de passe'
New-LocalUser -Name 'deploy' -Password $Secure -Description 'Compte deploiement'
Add-LocalGroupMember -Group 'Administrators' -Member 'deploy'
Mises à jour Windows (aperçu)
Install-Module PSWindowsUpdate -Force -Scope AllUsers
Get-WindowsUpdate
Install-WindowsUpdate -AcceptAll -AutoReboot
Planifiez les redémarrages en fenêtre de maintenance.
Journal des événements
Get-WinEvent -LogName System -MaxEvents 20 | Format-Table TimeCreated, Id, LevelDisplayName, Message -Wrap
Get-WinEvent -FilterHashtable @{LogName='Application'; Level=2; StartTime=(Get-Date).AddDays(-1)}
Niveau 2 = Erreur.
Pipeline et export CSV
Get-Service | Where-Object { $_.StartType -eq 'Automatic' } |
Select-Object Name, Status, DisplayName |
Export-Csv -Path 'C:\Reports\services-auto.csv' -NoTypeInformation -Encoding UTF8
Variables et scripts simples
Fichier C:\Scripts\Disk-Alert.ps1 :
param([int]$SeuilGo = 10)
$Disque = Get-PSDrive C
$LibreGo = [math]::Round($Disque.Free / 1GB, 2)
if ($LibreGo -lt $SeuilGo) {
Write-Warning "Espace disque C: faible ($LibreGo Go libres)"
}
Exécution :
& 'C:\Scripts\Disk-Alert.ps1' -SeuilGo 15
Aide intégrée
Get-Command *-NetFirewall*
Get-Help New-NetFirewallRule -Examples
Update-Help -Force -ErrorAction SilentlyContinue
Bonnes pratiques
- Utilisez
-WhatIfsur les cmdlets destructives quand c'est supporté. - Loggez les scripts de production vers
C:\Logs\. - Ne stockez pas de mots de passe en clair dans les scripts ; préférez SecretManagement ou saisie interactive.
- Testez sur un snapshot avant changements massifs.
Dépannage
| Problème | Solution |
|---|---|
| ---------- | ---------- |
| « running scripts is disabled » | Set-ExecutionPolicy RemoteSigned |
| Accès refusé | Lancer PowerShell en administrateur |
| Module introuvable | Install-Module / Import-Module |
| Caractères UTF-8 cassés | [Console]::OutputEncoding = [Text.UTF8Encoding]::UTF8 |
Besoin d'aide ?
Pour des scripts d'automatisation liés à l'infrastructure HolyCloud (API, snapshots), consultez la documentation VPS ou le support avec votre cas d'usage précis.