Outils pour utilisateurs

Outils du site


systemes_dexploitation:windows:all:powershell

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
systemes_dexploitation:windows:all:powershell [2016/11/09 19:33] – [Exécuter des scripts] sgariepysystemes_dexploitation:windows:all:powershell [2016/12/19 21:55] (Version actuelle) – supprimée sgariepy
Ligne 1: Ligne 1:
-====== PowerShell ====== 
- 
-===== Version ===== 
- 
-  $PSVersionTable 
- 
-===== Exécuter des scripts ===== 
- 
-Par défaut, l'exécution de scripts PowerShell ne sont pas permis((exception de Windows Server 2012 R2 qui le permet localement)).  Pour se faire, il faut exécuter PowerShell en Administrateur et exécuter cette commande: 
-  Set-ExecutionPolicy RemoteSigned 
-   
- 
- 
-====== Variables ====== 
- 
-On peut spécifier une variable tout simplement en lui assignant une valeur: 
- 
-<code> 
-$var="Ceci est une chaîne." 
-$nombre = 5 
-$fichiers = dir C:\ 
-</code> 
- 
-===== Variables d'environnement ===== 
- 
-Les variables d'environnement on comme leur propre //namespace// ''$env:'' Par exemple, pour le ''PATH'', il faut le référencer par ''$env:PATH''. 
- 
-  Write-Host $env:PATH 
- 
-Pour la liste des variables d'environnement, on peut faire ''Get-ChildItem Env:''. 
- 
-====== Chaînes ====== 
- 
- 
-Dans PowerShell, les chaînes peuvent être délimitées par des guillemets simples (''%%'%%'', //single-quote//) ou doubles (''%%"%%'', //double-quote//).  Donc, ces deux valeurs sont équivalentes: 
-  * ''%%"Hello World"%%'' 
-  * ''%%'Hello World'%%'' 
- 
-Utiliser les deux types de délimiteurs permet d'inclure des caractères de l'autre type, par exemple: ''%%J'utilise le PowerShell.%%'' ou ''%%'Il a dit "Hello World" dans son script PowerShell.'%%''. 
- 
-Si un guillemet simple est nécessaire dans une chaîne délimitée par des guillemets simples, on peut les doubler, par exemple : ''%%'J''utilise PowerShell.'%%''. 
- 
-===== Here-string ===== 
- 
-Pour initialiser une chaîne sur plusieurs lignes, on peut utilser le principe de //here-string// avec des ''%%'@%%'' ou ''%%"@%%'': 
- 
-<code> 
-$var='@ 
-J'utilise les here-strings 
-dans PowerShell 
-'@ 
- 
-$var2="@ 
-un autre exemple de here-string. 
-"@ 
- 
-# En bas, ça ne fonctionnera pas 
-$var3='@ 
-on ne peut pas laisser d'espace devant le dernier delimiteur 
-    '@ 
-</code> 
- 
- 
-===== Substitution de chaîne ===== 
- 
-La différence principale entre utiliser le délimiteur //single-quote// ou //double-quote//, c'est la substitution dans les chaînes.  Dans les chaînes délimitées par des //double-quotes//, l'utilisation d'une variable dans la chaîne sera remplacée par sa valeur.  Si la variable ''$nom'' contient ''Stéphane'', la valeur de la chaîne ''%%"Mon nom est $nom."%%'' sera ''Mon nom est Stéphane.'' 
- 
- 
- 
-===== Caractère d'échappement ===== 
- 
-Normalement dans les langages de programmation, le caractère d'échappement est la barre oblique inversée (''\'', //backslash//), mais dans PowerShell on peut s'en servir comme séparateur de répertoires dans les chemins (''C:\Program Files\Application''), donc on utilise plutôt le //backtick// : ''`''. 
- 
-  "La valeur de la variable `$var est $var" 
- 
- 
-Par exemple, pour une commande : 
- 
-  Copy-Item -Recurse C:\Projets\Application` 101\Site` Web\* -ToSession $session -Destination C:\inetpub\Application` 101 
- 
- 
-====== Scripts ====== 
- 
-===== Paramètres ===== 
- 
- 
-Pour un script appelé de cette façon : ''script.ps1 param1 param2'', les valeurs seront dans ''args'' qui est un tableau: 
- 
-  $param1=args[0] 
-  $param2=args[1] 
- 
-Pour les paramètres nommés, par exemple dans ''script.ps1 -nom Mike'', c'est à l'aide de la fonction ''param()'': 
-  param($nom) 
-  return "Le nom est $nom." 
- 
- 
-====== Logique ====== 
- 
- 
-===== Conditions ===== 
- 
-==== If ==== 
- 
- 
-L'instruction logique la plus simple est le ''if''. 
- 
-<code> 
-param($number) 
-if ($number -eq 5) { 
-    Write-Output "Vous avez deviné le chiffre magique." 
-} 
-else { 
-    Write-Output "Vous n'avez pas trouvé." 
-} 
-</code> 
- 
-==== Switch ==== 
- 
-Au lieu du ''if'', on peut utiliser le ''switch'' s'il y a beaucoup de résultats possibles. 
- 
-<code> 
-switch (expression) 
-{ 
-    {test} {code block} 
-    value {code block} 
-    default {code block} 
-} 
-</code> 
- 
- 
-<code> 
-$today=get-date 
- 
-switch ($today.day) 
-{ 
-  1 { Write-Host "Jour de paie!" } 
-  1 { Write-Host "Arroser les plantes." } 
-  5 { Write-Host "Rappel pour payer les factures." } 
-  10 { Write-Host "Sortir les ordures." } 
-  default { Write-Host "Rien à se rappeler aujourd'hui." } 
-} 
-</code> 
- 
- 
-==== Opérateurs ==== 
- 
-Les opérateurs suivant ne sont pas sensibles à la casse par défaut. 
- 
-^ Opérateur     ^ Description  ^ 
-| ''-eq''           | Equal                                                                     | 
-| ''-ne''           | Not equal                                                                 | 
-| ''-ge''           | Greater than or equal                                                     | 
-| ''-gt''           | Greater than                                                              | 
-| ''-lt''           | Less than                                                                 | 
-| ''-le''           | Less than or equal                                                        | 
-| ''-like''         | Wildcard comparison                                                       | 
-| ''-notlike''      | Wildcard comparison                                                       | 
-| ''-match''        | Regular expression comparison                                             | 
-| ''-notmatch''     | Regular expression comparison                                             | 
-| ''-replace''      | Replace operator                                                          | 
-| ''-contains''     | Containment operator                                                      | 
-| ''-notcontains''  | Containment operator                                                      | 
-| ''-shl''          | Shift bits left (PowerShell 3.0)                                          | 
-| ''-shr''          | Shift bits right – preserves sign for signed values.(PowerShell 3.0)      | 
-| ''-in''           | Like ''-contains'', but with the operands reversed.(PowerShell 3.0)       | 
-| ''-notin''        | Like ''-notcontains'', but with the operands reversed.(PowerShell 3.0)    | 
- 
- 
-Pour avoir une comparaison sensible à la casse, il faut préfixer d'un ''c'' devant l'opérateur, par exemple ''-ceq'' au lieu de ''-eq''. 
- 
- 
-Source : [[http://ss64.com/ps/syntax-compare.html|Comparison Operators]] 
-===== Boucles ===== 
- 
- 
- 
- 
- 
- 
-====== Gestion d'erreurs ====== 
- 
- 
- 
- 
-===== Trap statement ===== 
- 
-L'utilisation du //trap statement// (''$_'') est rarement utilisé sauf quand la verison de PowerShell disponible n'est que 1.0.  Comme c'est rarement utilisé, on documentera pas beaucoup cet aspect de PowerShell, seulement en montrant un exemple. 
- 
-<code> 
-function test-trap { 
-    trap { 
-        "Une erreur est survenue: $_" 
-    } 
-     
-    $var = 1/0 
-    Write-Host "Fin de la fonction" 
-} 
-</code> 
- 
-On peut utiliser ''continue'' ou ''break'' dans le bloc du ''trap'' sous la ligne ''%%"Une erreur est survenue: $_"%%'' La mention ''continue'' aura pour effet de continuer l'exécution du script, sinon ''break'' arrêtera son exécution. 
- 
- 
-===== Try/Catch ===== 
- 
-Dans PowerShell 2.0 ou plus, on peut utiliser les ''try'', ''catch'' et ''finally'' dans les scripts. 
- 
- 
-<code> 
-try { 
-    $var=1/0 
-    "La fonction s'est terminée correctement" 
-} 
-catch [System.Management.Automation.CommandNotFoundException] { 
-    "Impossible de trouver la commande $_" 
-} 
-catch { 
-    "Quelque chose est arrivé : $_" 
-} 
-finally { 
-    "Ceci s'exécute toujours." 
-} 
-</code> 
- 
- 
-===== ErrorAction ===== 
- 
- 
- 
- 
- 
-===== Code de sortie ===== 
- 
-  commande_erreur.exe 
-  exit $LASTEXITCODE 
-   
-   
-====== Commandes ====== 
- 
-===== Système de fichiers ===== 
- 
-  Param($path) 
-  new-item -ItemType Directory -Name $path 
-  cd $path 
- 
- 
- 
-====== Commandes utiles ====== 
- 
- 
-===== Exécution ===== 
- 
-Pour l'arrêt momentané de l'exécution: 
-  Start-Sleep -Seconds 600 
- 
- 
- 
- 
-====== Exemples ====== 
- 
- 
-  iwr https://domain.org/script.ps1 -UseBasicParsing | iex 
- 
- 
- 
- 
- 
- 
- 
  
systemes_dexploitation/windows/all/powershell.1478716430.txt.gz · Dernière modification : 2022/02/02 00:42 (modification externe)