miroir de
https://github.com/PAPAMICA/Wiki-Tech.io.git
synchronisé 2024-11-07 10:10:26 +01:00
102 lignes
6,1 Kio
HTML
102 lignes
6,1 Kio
HTML
<!--
|
||
title: Powershell
|
||
description:
|
||
published: true
|
||
date: 2021-05-09T14:09:09.540Z
|
||
tags:
|
||
editor: ckeditor
|
||
dateCreated: 2021-05-08T14:42:07.092Z
|
||
-->
|
||
|
||
<h1>Définition</h1>
|
||
<p>PowerShell est un langage script fondé sur la programmation orientée objet. Le logiciel PowerShell est l'interpréteur de l’interface en ligne de commande de l'environnement de développement Windows PowerShell.</p>
|
||
<p> </p>
|
||
<h1>Les commandes ou applets de commande (cmdlet)</h1>
|
||
<p>elles sont composées d’une paire de la forme “verbe ”-“nom” destiné à en faciliter la mémorisation.</p>
|
||
<p>exemple :</p>
|
||
<pre><code class="language-plaintext">get-service</code></pre>
|
||
<p>get = verbe</p>
|
||
<p>service = nom</p>
|
||
<p> </p>
|
||
<h2>Les variables</h2>
|
||
<p>Une variable PowerShell est un emplacement de stockage provisoire en mémoire destiné à recueillir une valeur, un objet ou une collection d’objets.<br>Les variables sont généralement nommées, et leurs noms sont toujours précédés d’un symbole “$“<br>Les variables sont automatiquement “typées” lors de l’affectation de valeur (si elles ne sont pas déclarées au préalable.)</p>
|
||
<p>exemple :</p>
|
||
<pre><code class="language-plaintext">$variable = une valeur ou plusieurs valeurs</code></pre>
|
||
<p> </p>
|
||
<p> </p>
|
||
<h2>Le pipeline</h2>
|
||
<p>Le pipeline, symbolisée par le caractère “<strong>|</strong>” (<strong>AltGr</strong> + <strong>6</strong>) permet d'exécuter plusieurs commandes à la suite.</p>
|
||
<p>exemple : </p>
|
||
<pre><code class="language-plaintext">get-process | Sort-Object CPU</code></pre>
|
||
<p>Dans ce cas précis, la commande <code>sort-object</code> tri les processus par utilisation de Cpu</p>
|
||
<p> </p>
|
||
<h2>L' aide</h2>
|
||
<p>Sous PowerShell la commande <code>get-help</code> permet d'afficher la fonction et des exemples d'une commande.</p>
|
||
<pre><code class="language-plaintext">get-help <la commande></code></pre>
|
||
<p>Mais avant d'utiliser cette commande il faut faire une mise à jour de l'aide de PowerShell avec la commande</p>
|
||
<pre><code class="language-plaintext"> update-help</code></pre>
|
||
<p>cette commande permet d'avoir une aide manière très générale si on souhaite obtenir plus d'information on peut ajouter l'option<code> -detailed</code></p>
|
||
<pre><code class="language-plaintext">get-help <la commande> -detailed</code></pre>
|
||
<p>On peut aussi lister des exemples d'utilisation d'une commande avec l'option <code>-examples</code></p>
|
||
<pre><code class="language-plaintext">get-help <la commande> -examples</code></pre>
|
||
<p>Il arrive parfois que l'aide renvoyée sous PowerShell ne soit pas complète malgré un <code>update-help.</code></p>
|
||
<p>Pour cela il y a possibilité d'aller consulter directement l'aide en ligne avec l'option<code> -online </code></p>
|
||
<pre><code class="language-plaintext">get-help <la commande> -online</code></pre>
|
||
<p> </p>
|
||
<p>Si je veux de l'aide sur la syntaxe d'une commande, PowerShell indique par “<strong>[ ]</strong>” si le paramètre est obligatoire.</p>
|
||
<p>par exemple si je veux de l'aide sur la syntaxe de commande <code>get-childitem</code> </p>
|
||
<pre><code class="language-plaintext">get-help get-childitem</code></pre>
|
||
<p>on peut constater dans la capture que certains paramètres sont obligatoires.</p>
|
||
<figure class="image image_resized" style="width:88.82%;"><img src="/capture4.png"></figure>
|
||
<p> </p>
|
||
<p> </p>
|
||
<p>La commande <code>get-help</code> permet également de rechercher une commande si, par exemple, je souhaite trouver une commande qui gère les services.</p>
|
||
<pre><code class="language-plaintext">get-help service</code></pre>
|
||
<p>voici ce que renvoie la commande, on peut voir les commandes qui contiennent le mot service.</p>
|
||
<figure class="image image_resized" style="width:86.32%;"><img src="/capture1.png"></figure>
|
||
<p> </p>
|
||
<p>Une autre fonction de l'aide permet d'avoir des informations sur un sujet précis.</p>
|
||
<p>pour lister ces sujet je vais utiliser l'option<code> about_*</code> </p>
|
||
<pre><code class="language-plaintext">get-help about_*</code></pre>
|
||
<p>Par exemple, si je veux de l'aide au sujet de pipeline</p>
|
||
<pre><code class="language-plaintext">get-help about_pipeline</code></pre>
|
||
<p>voici ce que renvoie la commande</p>
|
||
<figure class="image image_resized" style="width:84.46%;"><img src="/capture3.png"></figure>
|
||
<p> </p>
|
||
<h2>Les providers</h2>
|
||
<p> </p>
|
||
<p>Je fini mon café, je m'en occupe </p>
|
||
<h1>Création d'un menu sous Powershell</h1>
|
||
<p>Voici un exemple de menu qu'il est possible de faire avec la méthode suivante :</p>
|
||
<figure class="image"><img src="/capture2.png"></figure>
|
||
<p> </p>
|
||
<h2>Principe de fonctionnement</h2>
|
||
<p>Nous avons besoin de déclarer une variable qui va servir en quelque sorte de bouton “allumé” ou “éteins” : <code>$continue = $true</code></p>
|
||
<p>Avec cette variable j'utilise une boucle pour permettre de laisser en permanence l'affichage : </p>
|
||
<pre><code class="language-plaintext">while (true){
|
||
<le menu avec des write-host>
|
||
}</code></pre>
|
||
<p>Puis une seconde variable pour stocker mon choix avec <code>$choix = read-host “faire un choix”</code></p>
|
||
<p>Suivant l'état de ce choix le script sortira de la boucle <code>while</code> et cela provoquera soit une action du script soit une sortie du script avec switch ($choix).</p>
|
||
<p>Pour sortir du script si je fait le choix ‘<i>x</i>’ le script passe la variable <code>$continue</code> à <code>false</code> ce qui aura pour effet d'arrêter la boucle while.</p>
|
||
<p>la commande <code>default </code>permet de renvoyer un message d'avertissement si je rentre un choix qui n'est pas dans le menu.</p>
|
||
<p> </p>
|
||
<h2>Exemple</h2>
|
||
<pre><code class="language-plaintext">$continue = $true
|
||
while (continue){
|
||
write-host “----------------------MON TITRE -----------------------”
|
||
write-host “1. mon action 1”
|
||
write-host "2. mon action2"
|
||
write-host "x. exit"
|
||
write-host"-------------------------------------------------------------------"
|
||
$choix = read-host “faire un choix :”
|
||
switch ($choix){
|
||
1{commande de mon action 1}
|
||
2{commande de mon action 2}
|
||
‘x’ {$continue= $false}
|
||
default {Write-Host "Choix invalide"-ForegroundColor Red}
|
||
}
|
||
}
|
||
|
||
</code></pre>
|
||
<p> </p>
|