Outils pour utilisateurs

Outils du site


sysadmin:windows:cli:introduction_a_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
sysadmin:windows:cli:introduction_a_powershell [2023/06/21 19:04] – ↷ Nom de la page changé de sysadmin:windows:cli:powershell à sysadmin:windows:cli:introduction_a_powershell yoannsysadmin:windows:cli:introduction_a_powershell [2026/10/11 11:12] (Version actuelle) – yoann
Ligne 1: Ligne 1:
 {{tag>sysadmin windows cli powershell}} {{tag>sysadmin windows cli powershell}}
  
-:TODO_DOCUPDATE: 
  
 ====== PowerShell ====== ====== PowerShell ======
Ligne 17: Ligne 16:
   * **Système d'aide intégrée**;   * **Système d'aide intégrée**;
   * **Système de pipeline** permettant le chaînage des commandes;   * **Système de pipeline** permettant le chaînage des commandes;
-  * Prise en charge des**alias** ou noms alternatifs pour les commandes et les paramètres rendant les appels aux traitements similaires à d'autres systèmes/Shell.+  * Prise en charge des **alias** ou noms alternatifs pour les commandes et les paramètres rendant les appels aux traitements similaires à d'autres systèmes/Shell.
  
 Powershell a cependant quelques spécificités : Powershell a cependant quelques spécificités :
Ligne 36: Ligne 35:
 # Ceci est un commentaire # Ceci est un commentaire
 </code> </code>
 +
 +Les commentaires permettent d'auto-documenter le code (scripts et fonctions) et peuvent être extraits par la commande **Get-Help**. Cet usage est présenté dans le wiki [[dev/powershell/integration_aide| intégration de l'aide]].
  
 ===== Généralités sur les commandes ===== ===== Généralités sur les commandes =====
Ligne 63: Ligne 64:
 # Rechercher les commandes ayant pour verbe get et "network" dans le substantif # Rechercher les commandes ayant pour verbe get et "network" dans le substantif
 Get-Command -Verb Get -Noun *network* Get-Command -Verb Get -Noun *network*
 +</code>
 +
 +==== Appel d'une cmdlet ====
 +
 +On peut invoquer une cmdlet via son nom, un alias ou son nom pleinement qualifié :
 +<code powershell>
 +# Exécution de la cmdlet via son nom usuel
 +Get-ChildItem
 +
 +# Exécution de la même cmdlet via un de ses alias
 +ls
 +
 +# Exécution de la cmdlet via son nom pleinement qualifié (module\cmdlet)
 +Microsoft.PowerShell.Management\Get-ChildItem
 </code> </code>
  
Ligne 146: Ligne 161:
 ===== Introspection des objets ===== ===== Introspection des objets =====
  
-Les commandes retournent des objets. La réponse fournie par la commande est une mis en forme par défaut ne présentant pas forcément l'ensemble des informations disponibles dans l'objet. L' applet **Get-Member** permet d'analyser/d'introspecter l'objet retourné.+Les commandes retournent des objets. La réponse fournie par la commande est une mis en forme par défaut ne présentant pas forcément l'ensemble des informations disponibles dans l'objet. La cmdlet **Get-Member** permet d'analyser/introspecter l'objet retourné.
  
-On utilise Get-Member à la suite d'une commande pour obtenir les informations sur les objets retournés:+On utilise **Get-Member** à la suite d'une commande pour obtenir les informations sur les objets retournés :
  
 <code powershell> <code powershell>
Ligne 170: Ligne 185:
 </note> </note>
  
-Les objets peuvent contenir de nombreux attributs, le filtre **Select-object** permet de filtrer/sélectionner un sous ensemble d' attributs:+===== Filtres ===== 
 + 
 +Les objets peuvent contenir de nombreux attributs, le filtre **Select-Object** permet de filtrer/sélectionner un sous ensemble d' attributs :
  
 <code powershell> <code powershell>
Ligne 176: Ligne 193:
 # Process retourné par la commande Get-Process # Process retourné par la commande Get-Process
 Get-Process -Name "cmd" | Select-Object ProcessName,Description | Format-List Get-Process -Name "cmd" | Select-Object ProcessName,Description | Format-List
 +</code>
 +
 +La cmdlet **Where-Object** permet de filtrer les objets en fonction des valeurs de leurs attributs :
 +
 +<code powershell>
 +# Certaines commandes permettent de filtrer en spécifiant une valeur
 +# d'attribut en argument 
 +Get-Service -Name EventLog
 +
 +# Equivalent via Where-Object
 +Get-Service | Where-Object Name -EQ "EventLog"
 </code> </code>
  
Ligne 190: Ligne 218:
 </code> </code>
  
-La vue par défaut associée à l'objet ne présentent pas toutes ses propriétés. Selon les besoin, l'utilisateur peut utiliser **Select-Object** pour selectionner les attributs sur lesquels il souhaite travailler.+La vue par défaut associée à l'objet ne présentent pas toutes ses propriétés. Selon les besoin, l'utilisateur peut utiliser **Select-Object** pour sélectionner les attributs sur lesquels il souhaite travailler.
  
 Les commandes **Format-*** permettent d'afficher les propriétés sélectionnées sous différentes formes. Les commandes **Format-*** permettent d'afficher les propriétés sélectionnées sous différentes formes.
Ligne 227: Ligne 255:
  
 <note> <note>
-La stratégie de sécurité n'est pas conçue comme un mécanisme de sécurité permettant de réellement limiter les actions de l'utilisateur car toutes les commandes présentes dans le script pourront être saisies manuellement. C'est simplement une fonctionnalité visant à empêcher les exécution involontaires.+La stratégie d'exécution n'est pas conçue comme un mécanisme de sécurité permettant de réellement limiter les actions de l'utilisateur car toutes les commandes présentes dans le script pourront être saisies manuellement. C'est simplement une fonctionnalité visant à empêcher les exécution involontaires.
 </note> </note>
 +
 +Les stratégies d'exécutions sont les suivantes :
 +
 +  * **Restricted** : Aucun script ne peut être exécuté ;
 +  * **AllSigned** : Des scripts ne peuvent être exécutés que s’ils sont signés numériquement ;
 +  * **RemoteSigned** : Des scripts téléchargés ne peuvent être exécutés que s’ils sont signés numériquement ;
 +  * **Unrestricted** : Tous les scripts peuvent être exécutés, mais une invite de confirmation s’affiche lors de l’exécution de scripts non signés qui sont téléchargés ;
 +  * **Bypass** : Tous les scripts sont exécutés sans invite ;
 +  * **Undefined** : La stratégie n'est pas définie.
  
 <code powershell> <code powershell>
Ligne 240: Ligne 277:
 Get-ExecutionPolicy -Scope CurrentUser Get-ExecutionPolicy -Scope CurrentUser
 </code>  </code> 
 +
 +<note>
 +Si la stratégie effective est **undefined** la stratégie d’exécution la plus restrictive est appliquée (**Restricted**).
 +</note>
  
 La documentation officielle en ligne détaille les différentes [[https://learn.microsoft.com/fr-fr/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-5.1|stratégies d'exécution de powershell]]. La documentation officielle en ligne détaille les différentes [[https://learn.microsoft.com/fr-fr/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-5.1|stratégies d'exécution de powershell]].
Ligne 396: Ligne 437:
 ===== PowerShell Gallery ===== ===== PowerShell Gallery =====
  
-PowerShell Gallery est un dépôt centralisé dédié aux technologies PowerShell. A partir de Windows PowerShell 5.0 le module PowerShellGet permet de rechercher et d'installer des scripts et modules.  **Find-Command** fonctionne de façon similaire à Get-Command mais permet de rechercher dans le dépôt. Le résultat filtré pourra être envoyer a **Install-Module** pour installer localement le module souhaité. +PowerShell Gallery est un dépôt centralisé dédié aux technologies PowerShell. A partir de Windows PowerShell 5.0 le module PowerShellGet permet de rechercher et d'installer des scripts et modules.  **Find-Command** fonctionne de façon similaire à Get-Command mais permet de rechercher dans le dépôt. Le résultat filtré pourra être envoyer a **Install-Module** pour installer localement le module souhaité. 
 + 
 +Les principales cmdlets pour rechercher dans PowerShell Gallery : 
 +^ Find-Command | | 
 +^ Find-Script  | | 
 +^ Find-Module  | |
  
 ===== Références ===== ===== Références =====
Ligne 403: Ligne 449:
   * https://learn.microsoft.com/fr-fr/powershell/scripting/learn/ps101/01-getting-started?view=powershell-5.1   * https://learn.microsoft.com/fr-fr/powershell/scripting/learn/ps101/01-getting-started?view=powershell-5.1
   * https://www.powershellgallery.com/   * https://www.powershellgallery.com/
 +  * [[https://www.youtube.com/watch?v=UYs8Cn-qvVg|15 commandes indispensables pour débuter avec PowerShell (youtube.com) ]]
sysadmin/windows/cli/introduction_a_powershell.1687374246.txt.gz · Dernière modification : 2023/06/21 19:04 de yoann