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.
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.
Commentaires
Enregistrer un commentaire