about_Script_Blocks

Mis à jour: mai 2014

S'applique à: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

RUBRIQUE

about_Script_Blocks

DESCRIPTION COURTE

Définit ce qu'est un bloc de script et explique comment utiliser les blocs de script dans le langage de programmation de Windows PowerShell®.

DESCRIPTION DÉTAILLÉE

Dans le langage de programmation de Windows PowerShell, un bloc de script est une collection d'instructions ou d'expressions qui peuvent être utilisées comme une seule unité. Un bloc de script peut accepter des arguments et retourner des valeurs.

D'un point de vue syntaxique, un bloc de script est une liste d'instructions entre accolades, comme illustré dans la syntaxe suivante :

        {<statement list>}

Un bloc de script retourne la sortie de toutes les commandes du bloc de script, comme objet unique ou sous forme de tableau.

Comme les fonctions, un bloc de script peut inclure des paramètres. Le mot clé Param permet d'affecter des paramètres nommés, comme illustré dans la syntaxe suivante :

        {
            param ([type]$parameter1 [,[type]$parameter2])
            <statement list>
        }

Dans un bloc de script, contrairement à une fonction, vous ne pouvez pas spécifier de paramètres en dehors des accolades.

Comme les fonctions, les blocs de script peuvent inclure les mots clés DynamicParam, Begin, Process et End. Pour plus d'informations, consultez about_Functions et about_Functions_Advanced.

Utilisation des blocs de script

Un bloc de script est une instance d'un type du Microsoft .NET Framework (System.Management.Automation.ScriptBlock). Les commandes peuvent avoir des valeurs de paramètre de bloc de script. Par exemple, l'applet de commande Invoke-Command possède un paramètre ScriptBlock qui accepte une valeur de bloc de script, comme illustré dans cet exemple :

          C:\PS> invoke-command -scriptblock  { get-process }
          Handles  NPM(K)    PM(K)     WS(K) VM(M)   CPU(s)     Id ProcessName
          -------  ------    -----     ----- -----   ------     -- -----------            
              999      28    39100     45020   262    15.88   1844 communicator
              721      28    32696     36536   222    20.84   4028 explorer   
          . . .           

Le bloc de script qui est utilisé comme valeur peut être plus complexe, comme illustré dans l'exemple suivant :

          C:\PS> invoke-command -scriptblock { param ($uu = "Parameter"); 
              "$uu assigned." }  
          Parameter assigned.

Le bloc de script de l'exemple précédent utilise le mot clé Param pour créer un paramètre ayant une valeur par défaut. L'exemple suivant utilise le paramètre Args de l'applet de commande Invoke-Command pour affecter une valeur différente au paramètre :

          C:\PS> invoke-command -scriptblock {param ($uu = "Parameter"); 
              "$uu assigned."} -args "Other value"
          Other value assigned.

Vous pouvez affecter un bloc de script à une variable, comme illustré dans l'exemple suivant :

          C:\PS> $a = {param ($uu = "Parameter"); "$uu assigned."}

Vous pouvez utiliser la variable avec une applet de commande telle que Invoke-Command, comme illustré dans l'exemple suivant :

          C:\PS> invoke-command -scriptblock $a -args "Other value"
          Other value assigned.

Vous pouvez exécuter un bloc de script assigné à une variable à l'aide de l'opérateur d'appel (&), comme illustré dans l'exemple suivant :

          C:\PS> &$a 
          Parameter assigned.

Vous pouvez également fournir un paramètre au bloc de script, comme illustré dans l'exemple suivant :

          C:\PS> &$a "Other value"
          Other value assigned.

Si vous souhaitez attribuer la valeur créée par un bloc de script à une variable, utilisez l'opérateur d'appel pour exécuter le bloc de script directement, comme illustré dans l'exemple suivant :

          C:\PS> $a = &{param ($uu = "Parameter"); "$uu assigned."}
          C:\PS> $a
          Parameter assigned.

Pour plus d'informations sur l'opérateur d'appel, consultez about_Operators.

VOIR AUSSI

about_Functions

about_Functions_Advanced

about_Operators