powershell -ExecutionPolicy Bypass -File .\myscript.ps1
Get-Help Command-Name
Get-Help Get-Command -Examples
Get-Command Verb-* ou Get-Command *-Noun #recherche de cmdlets
Manipulation d’objets
le Pipe permet de passer un objet à un autre cmdlet
Verb-Noun | Get-Member
ex. Get-Command | Get-Member -MemberType Method #retrouve les méthodes d’une cmdlet
ex. (Get-Command Get-ChildItem).Parameter #retrouve les paramètres d’une cmdlet
Get-ChildItem | Select-Object -Property Mode, Name #liste les répertoires en sélectionnant le mode et le nom
Filtration d’objets
Format-List (fl) permet d’obtenir davantage d’informations à propos des objets
dir | Format-List
Out-File peut être utilisé pour sauvegarder la sortie vers un fichier
Get-HotFix | Out-File hotfix.txt
Get-Service | Where-Object -Property Status -eq Stopped #visualiser les services arrêtés
Tri
Get-ChildItem | Sort-Object
Quelques commandes powershell utiles:
Get-ChildItem -Path C:\ -Include *interesting-file.txt* -File -Recurse -ErrorAction SilentlyContinue #trouver le fichier interesting-file.txt dans l’arborescence
Get-Content “C:\Program Files\interesting-file.txt.txt” #affiche le contenu du fichier
Get-Command | Where-Object -Parameter CommandType -eq Cmdlet | measure #déterminer le nombre total de cmdlet (ne compte pas les CommandType Alias)
Get-FileHash -Path “C:\Program Files\interesting-file.txt.txt” -Algorithm MD5 #calcule le hash d’un fichier
Copy-Item source destination #copie un ou des fichiers
Move-Item source destination #déplace un fichier
Get-FileHash -Algorithm SHA256 fichier #calcule le hash d’un fichier
Get-Location #répertoire de travail actuel
Get-Location -Path “C:\Users\Administrator\Documents\Passwords” #vérifie si un répertoire existe
Invoke-WebRequest # cmdlet pour faire une requête à un serveur
certutil -decode “C:\Users\Administrator\Desktop\b64.txt” out.txt #decode le contenu en base64 d’un fichier
Get-LocalUser #Liste des usagers
Get-LocalUser | Where-Object -Property PasswordRequired -Match false #Liste les usagers dont un mot de passe n’est pas requis
Get-LocalGroup # Liste les groupes locaux
Get-NetIPAddress #information sur l’adresse IP
GEt-NetTCPConnection | Where-Object -Property State -Match Listen #Liste les ports ouverts
Get-Hotfix #patches installées
Get-Hotfix -Id KB4023834 #information sur la patch
Get-ChildItem C:\* -Recurse | Select-String -pattern API_KEY #recherche des fichiers avec “API_KEY” dans le contenu
Get-Process #Liste des processus
Get-ScheduleTask #Tâches schédulées
Get-Acl c:/ #Propriétaire d’un répertoire
Script simple pour vérifier si certains ports sont ouverts sur notre machine
$system_ports = Get-NetTCPConnection -State Listen
$text_port = Get-Content -Path C:\Users\Administrator\Desktop\ports.txt
foreach($port in $text_port){
if($port -in $system_ports.LocalPort){
echo $port
}
}
Ping plusieurs adresses IP
1..15 | %{echo "10.0.2.$_"; ping -n 1 10.0.2.$_ | Select-String ttl}
Script powershell pour la gestion des archives zip
Compress-Archive -Path C:\Invoices -DestinationPath C:\Archives\Invoices #zipper un répertoire
Compress-Archive -LiteralPath C:\ Invoices\File1.txt, C:\Invoices\File2.txt -DestinationPath C:\Archives\Invoices -Force #zipper des fichiers
Compress-Archive -Path C:\Invoices\* -Update -DestinationPath C:\Archives\Invoices #ajoute des fichiers l'archive invoices.zip
Expand-Archive -LiteralPath C:\Archives\Invoices.Zip -DestinationPath C:\ InvoicesUnzipped #extrait les fichiers de l'archive zip