Astuces en PowerShell
Windows PowerShell est le langage de script et aussi l’interpréteur de ligne de commande pour Windows. Il a été conçu pour les administrateurs systèmes et est orienté objet. Vous trouverez de la documentation sur le site de Microsoft.
A noter qu'il existe une version opensource et multi-plateforme appelée PowerShell Core.
Dans cet article nous présentons une série de commandes que nous utilisons et aussi des scripts basés sur Windows PowerShell 5.1.
Commandes
- Renommer une liste de fichiers dont le nom contient IMG
PS C:\Temp> Get-ChildItem -Filter '*IMG*' | Rename-Item -NewName {$_.Name -replace 'IMG','Photos'}
- Lister à plat les fichiers ordonnés par taille et affichés dans une grille (vous pouvez ajouter un -Filter pour un type de fichiers ou autres)
PS C:\Temp> Get-ChildItem -Path 'C:\MesDocuments' -Recurse -Force -File | Select-Object -Property FullName,@{Name='SizeGB';Expression={$_.Length / 1GB}},@{Name='SizeMB';Expression={$_.Length / 1MB}},@{Name='SizeKB' ;Expression={$_.Length / 1KB}} | Sort-Object { $_.SizeKB } -Descending | Out-GridView
- Comparer 2 répertoires contenant les mêmes fichiers:
> $Source = Get-Childitem -Recurse -path .\SourceFiles\
> $Copied = Get-ChildItem -Recurse -path .\CopiedFiles\
> Compare-Object -ReferenceObject $Source -DifferenceObject $Copied
Files with SiteIndicator => are only in the Copied folder
Files with SiteIndicator <= are only in the Source folder
- Supprimer des répertoires ".svn" récursivement dans une arborescence:
> gci .\ -r -include .svn -force -directory | Remove-Item -r -force
Scripts
Pour exécuter les scripts, nous vous recommandons d'utiliser Microsoft Visual Studio Code qui permet d’exécuter et de debugger directement les fichiers .ps1 (extension des scripts PowerShell)
- Appeler une API REST/Json
Function Get-SampleByGet($ip)
{
$apiKey = "myKey"
$resource = "https://geoipify.whoisxmlapi.com/api/v1?"
$uri = $resource + "apiKey=$apiKey" + "&ipAddress=$ip"
if ($ip) {
$resp = Invoke-RestMethod -Method Get -Uri $uri -Header @{ "User-Agent" = "PowerShell" }
$resp
}
}
Get-SampleByGet 8.8.8.8
# And the result is an object with the following data
country : US
region : California
city : Mountain View
lat : 37.40599
lng : -122.078514
postalCode : 94043
timezone : -08:00