Les 10 choses à savoir sur PowerShell

Certaines choses sont essentielles pour devenir un expert en Powershell. Voici les 10 choses à savoir sur PowerShell.

Se servir de Get-Help

Savoir se servir de cette commande est essentiel. Vous pouvez trouver tout ce dont vous avec besoin avec des recherches dans PowerShell.

Vous pouvez afficher les informations d'une commande, comme afficher l'aide pour la commande Get-Process :

Get-Help Get-Process

Vous avez la possibilité d'afficher des exemples d'une commande. Par exemple pour la commande Get-Process :

Get-Help Get-Process -Examples

Vous pouvez aussi rechercher des commande avec des mots-clés. Pour afficher toutes les commandes qui ont un lien avec des services on ferait :

Get-Help *service*

Connaître les raccourcis clavier

Ctrl + C : Termine l'éxécution.

Clic droit : Copier / Coller.

Flèches du haut et du bas : Parcourt l'historique des commandes.

Ctrl + Flèche gauche / Ctrl + Flèche Droite : Passe d'un mot à un autre.

Tabulation / Majuscules Tabulation : Suggestion de commande / Suggestion précédente.

F7 : Affiche l'historique des commandes entrées.

Ctrl + Début / Ctrl + Fin : Supprime tous les caractères avant le curseur / après le curseur.

Voir plus de raccourci clavier pour PowerShell

Créer des fichiers HTML ou CSV

Vous pouvez formatter votre fichier en HTML ou en CSV avec la commande ConvertTo-Html et ConvertTo-Csv.

Pour enregistrer tous les processus dans un tableau en HTML :

Get-Process | ConvertTo-Html -Property Name, Company -Title "Processus" > C:\Dossier\process.html

Ou au format CSV :

Get-Process | Select-Object name, company | ConvertTo-Csv > C:\Dossier\process.csv

Planifier des scripts

Cette fonctionnalité fonctionne sur les versions supérieures ou égales à Windows 8 / Windows Server 2012 et pour Powershell 4.0 ou supérieur.

$action = New-ScheduledTaskAction –Execute "Taskmgr.exe" 
$declencheur = New-ScheduledTaskTrigger -AtLogon
$utilisateur = "Serveur\Administrateur"
$parametres = New-ScheduledTaskSettingsSet
$tachePlanifie = New-ScheduledTask -Action $action -Principal $utilisateur -Trigger $declencheur -Settings $parametres Register-ScheduledTask T1 -InputObject $tachePlanifie

Si vous avez une version précédente, vous pouvez utiliser le planificateur de tâches de Windows. Le planificateur de tâches pourra alors exécuter un script .ps1.

Envoyer des courriers électroniques

Vous pouvez configurer vos scripts pour vous envoyer des emails grâce à la commande Send-EmailMessage.

Pour un email simple en smtp ça donne :

$de = "envoyeur@gmail.com"
$destinataire = "destinataire@gmail.com"
$port = "587"
$serveurSmtp = "smtp.gmail.com"

$username = "envoyeur@gmail.com"
$mdp = "motdepasse"
$sujet = "Sujet"
$corps = "Bonjour ! Ceci est un mail envoyé avec Powershell !"

$smtp = New-Object System.Net.Mail.SmtpClient($serveurSmtp, $port);
$smtp.EnableSSL = $true
$smtp.Credentials = New-Object System.Net.NetworkCredential($username, $mdp)

$smtp.Send($de, $destinataire, $sujet, $corps);

Enregistrer une session

Entrez la commande Start-Transcript et toutes les activités de votre console seront enregistrées dans un fichier texte dans vos Documents. Entrez Stop-Transcript pour arrêter l'enregistrement de la session.

WhatIf et Confirm

Powershell est un outil très puissant (d'où le nom...) mais aussi très dangereux. Powershell ne vous demandera pas confirmation si vous ne lui demandez pas.

WhatIf permet de connaitre l'action d'une commande sans l'exécuter. Qu'est-ce qui se passerait si j'arrêtais les processus avec le nom "explorer" ?

Stop-Process -Name explorer -WhatIf

Pour demander confirmation vous pouvez ajouter l'argument Confirm.

Stop-Process -Name explorer -Confirm

Connaître les alias

Les connaitres vous permettra d'aller plus vite lorsque vous taperez une commande. En revanche, lorsque vous écrivez des scripts, n'oubliez pas de commenter et d'utiliser les Cmdlet qui sont beaucoup plus explicites. Un Get-Process est plus clair que les alias gps ou ps...

Pour trouver tous les alias :

Get-Alias

Ou pour trouver les alias d'une commande :

Get-Alias -Definition Get-Job

Démarrer un ordinateur à distance

Il est parfois utiles de savoir comment redémarrer un ordinateur à distance avec Powershell. Pour redémarrer un ordinateur :

Start-Sleep 30; Restart-Computer -Force -ComputerName NomDeLaMachine

Si vous n'avez pas les droits administrateur vous pouvez entrer :

Stop-Computer -Computer NomDeLaMachine -Credential Serveur\Administrateur

Wildcards

Les wildcards permettent de faire des recherches avancées dans Powershell comme dans Get-Help où elles nous permettent de trouver des cmdlets. Vous pouvez aussi vous en servir dans certaines commandes comme dans Get-ChildItem avec Include et Filter.

Trouver les DLL avec un caractère en première place et le terme lib ensuite :

Get-ChildItem -Path $env:SystemRoot\System32\* -Include ?lib* -Filter *.dll

Ou trouver tous fichiers exe commençant par "s" ou "c" n'excédant pas les huit caractères :

Get-ChildItem -Path $env:SystemRoot\System32\* -Include s???????,c??????? -Filter *.exe
En savoir plus sur les Wildcards.

En vidéo

Les choses à savoir sur PowerShell.

Commentaires