Retourner sur le site

PowerShell pour administrateurs

Commandes PowerShell essentielles pour administrer un VPS Windows HolyCloud au quotidien.

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

  1. Menu Démarrer → tapez PowerShell.
  2. 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.

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 -WhatIf sur 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.