Powershell
Aller à la navigation
Aller à la recherche
| Fiche express | |
|---|---|
| Domaine | Shell & langage de script Windows |
| Éditeurs | PowerShell ISE, VS Code |
| Voir aussi | New-object · Get-wmiobject · Powershell AD module |
PowerShell est le shell et le langage de script d'administration de Microsoft, orienté objet et bâti sur le framework .NET. Cette page rassemble les bases du langage.
Découvrir les commandes
Get-Command -CommandType function
Get-Command -CommandType alias
Get-Command -CommandType cmdlet
Get-Command get-*
Get-Command *-item
# Filtrer par nom / verbe
Get-Command -Noun object
Get-Command -Verb write
Aide
help Measure-Object -Detailed
help Measure-Object -Full
help Measure-Object -Online
Get-Help Get-Command -Detailed | more
Variables et types
[int]$var = 12
[char]$c = 'A'
$chaine = "toto"
$tab = @("chaine1", "chaine2")
$var | Get-Member
$var.GetType()
Conversions :
[int][char]'B' # char -> int
$var.ToString()
[System.Convert]::ToString($var, 8) # base 8
[System.Convert]::ToString($var, 2) # base 2
Variables prédéfinies
$$ dernier mot de la dernière commande $^ premier mot de la dernière commande $? code retour de la dernière opération $_ objet courant dans un pipe $Args tableau des paramètres du script $Error tableau des erreurs de la session $PID PID du processus PowerShell $PWD répertoire courant $Profile chemin du profil PowerShell
Opérateurs
Par défaut, les opérateurs de comparaison ne respectent pas la casse.
+ - * / % -eq -ne -gt -ge -lt -le -like -notlike -match -notmatch -is -isnot -and -or -not ! -xor -replace -split -join $a .. $b opérateur de plage
Tableaux
[int[]]$tab = 1,2,3
$tab = [int]1, [double]2.5, [char]'A'
$tab[0,2]
$tab[$tab.Length - 1]
$tab.SetValue('C', 0)
# Tableau associatif (hashtable)
$h = @{ cle1 = 'element'; cle2 = 'element' }
$h['cle1']
$h.cle2
Boucles
# While
$n = 0
$tab = 0..99
while ($n -lt $tab.Length) { Write-Host $tab[$n]; $n++ }
# For
for ($i = 0; $i -le 99; $i++) { Write-Host $tab[$i] }
# Foreach
foreach ($p in Get-Process) {
Write-Host "$($p.Name) démarré le : $($p.StartTime)"
}
# ForEach-Object avec -Begin / -Process / -End
Get-Process | ForEach-Object -Begin { Write-Host "début`n" } -Process { $_.Name } -End { Write-Host "`nfin" }
Structures conditionnelles
if ($var1 -ge $var2) {
Write-Host "$var1 est plus grand que $var2"
} else {
Write-Host "$var1 est plus petit que $var2"
}
switch ($nombre) {
1 { Write-Host "c'est 1" }
2 { Write-Host "c'est 2" }
default { Write-Host "non pris en charge" }
}
Fonctions
function Set-Popup {
param([string]$message, [string]$titre)
$wshell = New-Object -ComObject WScript.Shell
$wshell.Popup($message, 0, $titre)
}
Set-Popup -titre 'Mon titre' -message 'Bonjour'
Fonction filtre :
filter Filtre-Repertoire {
if ($_.Mode -like "d*") { $_ }
}
Get-ChildItem | Filtre-Repertoire
Portée des variables
$global:valeur++ # accessible partout
$script:valeur = 10 # accessible au script courant
$private:valeur = 10 # accessible à la fonction seule
Cmdlets avancées
function MapDrive {
[CmdletBinding()]
param ([string]$lettre, [string]$partage)
$obj = New-Object -ComObject WScript.Network
$obj.MapNetworkDrive("${lettre}:", $partage)
}
Paramètre issu du pipe / obligatoire :
[CmdletBinding()]
param (
[Parameter(ValueFromPipeline=$true, Mandatory=$true)]$valeur
)
Profil
$Profile
New-Item -Path $Profile -ItemType File -Force
Voir aussi
- New-object — interopérabilité .NET/COM
- Get-wmiobject — WMI
- Powershell AD module — Active Directory
- Powercli — VMware vSphere