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édentes Révision précédente
Prochaine révision
Révision précédente
powershell_base1 [2020/05/22 11:35] – [ForEach-Object] nekanpowershell_base1 [2021/07/22 08:47] (Version actuelle) – [ForEach-Object] nekan
Ligne 1: Ligne 1:
-~~CLOSETOC~~ 
 ====== Les bases de Powershell - 1ère partie ====== ====== Les bases de Powershell - 1ère partie ======
 +<label type="info">Création</label> --- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2019/02/20 20:43//
  
 Je vais juste récapituler ici certaines bases très utiles dans la plupart des scripts. Je vais juste récapituler ici certaines bases très utiles dans la plupart des scripts.
Ligne 208: Ligne 208:
 Les boucles permettent de répéter un code un certain nombre de fois. Les boucles permettent de répéter un code un certain nombre de fois.
  
-<note important>Il faut toujours faire attention à ne pas créer une boucle infinie. Pensez à prévoir une porte de sortie.</note>+<callout type="warning" icon="true" title="Boucle infinie">Il faut toujours faire attention à ne pas créer une boucle infinie. Pensez à prévoir une porte de sortie.</callout>
  
 ==== ForEach-Object ==== ==== ForEach-Object ====
Ligne 233: Ligne 233:
 === Parallélisation === === Parallélisation ===
  
-<note important>**Mise à jour du 22/02/2020** : Dans Powershell Core, **ForEach** n'est plus la même chose que **ForEach-Object**.+  Référence : [[https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/foreach-object?view=powershell-7|Microsoft]] 
 + 
 +<callout type="warning" icon="true" title="Mise à jour du 22/02/2020">Dans Powershell Core, **ForEach** n'est plus la même chose que **ForEach-Object**.
   * **ForEach-Object** :  Permet la gestion des éléments du pipeline. Dispose désormais de l'option ''-Parallel'' permettant la gestion de plusieurs boucles en simultané (parallélisation).   * **ForEach-Object** :  Permet la gestion des éléments du pipeline. Dispose désormais de l'option ''-Parallel'' permettant la gestion de plusieurs boucles en simultané (parallélisation).
   * **ForEach** : Ne prend pas en charge ni le pipeline ni la parallélisation. Traite uniquement un nombre défini d'itération.   * **ForEach** : Ne prend pas en charge ni le pipeline ni la parallélisation. Traite uniquement un nombre défini d'itération.
-</note>+</callout>
  
-<note warning>Cet exemple n'est valable qu'en Powershell Core (version 7 ou supérieure).</note>+<callout type="warning" icon="true" title="Version">Cet exemple n'est valable qu'en Powershell Core (version 7 ou supérieure).</callout>
  
 Dans cette exemple, on crée une boucle qui va attendre 30 fois 1 seconde soit théoriquement un total de 30 secondes : Dans cette exemple, on crée une boucle qui va attendre 30 fois 1 seconde soit théoriquement un total de 30 secondes :
 <sxh powershell>(Measure-Command { 1..30 | ForEach-Object { Start-Sleep -Seconds 1 } }).Seconds <sxh powershell>(Measure-Command { 1..30 | ForEach-Object { Start-Sleep -Seconds 1 } }).Seconds
-10</sxh>+30</sxh>
  
 En activant le paramètre ''-Parallel'' : En activant le paramètre ''-Parallel'' :
-<sxh powershell>(Measure-Command { 1..30 | ForEach-Object { Start-Sleep -Seconds 1 } }).Seconds+<sxh powershell>(Measure-Command { 1..30 | ForEach-Object -Parallel { Start-Sleep -Seconds 1 } }).Seconds
 6</sxh> 6</sxh>
  
 La commande n'a mis que 6 secondes car la parallélisation a traitée 5 commandes (valeur par défaut) en concurrence. Le paramètre ''-ThrottleLimit'' permet de définir le nombre de commandes concurrentes : La commande n'a mis que 6 secondes car la parallélisation a traitée 5 commandes (valeur par défaut) en concurrence. Le paramètre ''-ThrottleLimit'' permet de définir le nombre de commandes concurrentes :
-<sxh powershell>(Measure-Command { 1..30 | ForEach-Object { Start-Sleep -Seconds 1 } -ThrottleLimit 10 }).Seconds+<sxh powershell>(Measure-Command { 1..30 | ForEach-Object -Parallel { Start-Sleep -Seconds 1 } -ThrottleLimit 10 }).Seconds
 3</sxh> 3</sxh>
  
Ligne 258: Ligne 260:
 995</sxh> 995</sxh>
  
-<note>La parallélisation est donc très intéressante mais à utiliser avec sagesse. Personnellement, je l'utilise dans des scripts opérant un même traitement sur un ensemble de postes distants (récupération d'informations, installations, mises à jour, ...).</note> +<callout type="info" icon="true" title="Parallélisation">La parallélisation est donc très intéressante mais à utiliser avec sagesse.</callout>
- +
  
 ==== For ==== ==== For ====
Ligne 344: Ligne 344:
 # du test aurait renvoyé $false # du test aurait renvoyé $false
 </sxh> </sxh>
- 
- --- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2019/02/20 20:43// 
  
 ~~DISCUSSION~~ ~~DISCUSSION~~
  • powershell_base1.1590140117.txt.gz
  • Dernière modification : 2020/05/22 09:35
  • (modification externe)