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
Prochaine révision
Révision précédente
Dernière révisionLes deux révisions suivantes
systemes_dexploitation:windows:all:powershell [2016/11/08 16:30] – [Code de sortie] sgariepysystemes_dexploitation:windows:all:powershell [2016/11/09 19:33] – [Exécuter des scripts] sgariepy
Ligne 1: Ligne 1:
 ====== PowerShell ====== ====== PowerShell ======
  
 +===== Version =====
 +
 +  $PSVersionTable
  
 ===== Exécuter des scripts ===== ===== 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
      
-  set-executionpolicy RemoteSigned+
  
 ====== Variables ====== ====== Variables ======
Ligne 17: Ligne 22:
 </code> </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 ====== ====== Chaînes ======
Ligne 81: Ligne 93:
   param($nom)   param($nom)
   return "Le nom est $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 =====
 +
  
  
Ligne 93: Ligne 185:
 ===== Trap statement ===== ===== 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> <code>
Ligne 106: Ligne 197:
 } }
 </code> </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 =====
 +
 +
  
  
Ligne 113: Ligne 233:
   commande_erreur.exe   commande_erreur.exe
   exit $LASTEXITCODE   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
 +
 +
 +
 +
 +
 +
 +
 +