RUBRIQUE
    about_Scripts

DESCRIPTION COURTE
    Décrit comment écrire et exécuter des scripts dans Windows PowerShell.

DESCRIPTION LONGUE
    Un script est un fichier de texte brut qui contient une ou 
    plusieurs commandes Windows PowerShell. Les scripts Windows 
    PowerShell ont l'extension de nom de fichier .ps1. 

    L'écriture d'un script enregistre une commande pour une 
    utilisation ultérieure et facilite son partage avec d'autres 
    utilisateurs. Plus important encore, il vous permet d'exécuter 
    les commandes simplement en tapant le chemin d'accès au script et 
    le nom de fichier. Les scripts peuvent être aussi simples qu'une 
    commande unique dans un fichier ou aussi longs qu'un programme 
    complexe.

    Les scripts ont des fonctionnalités supplémentaires, par exemple 
    le commentaire spécial #Requires, l'utilisation de paramètres, la 
    prise en charge des sections Data et la signature numérique pour 
    la sécurité. Vous pouvez également écrire des rubriques d'aide 
    pour les scripts et pour toutes les fonctions dans le script. 

  COMMENT ÉCRIRE UN SCRIPT

    Un script peut contenir toutes les commandes Windows PowerShell 
    valides, notamment des commandes uniques, des commandes qui 
    utilisent le pipeline, des fonctions et des structures de 
    contrôle, par exemple les instructions If et les boucles For.

    Pour écrire un script, démarrez un éditeur de texte (tel que le 
    Bloc-notes) ou un éditeur de script (tel que l'environnement 
    d'écriture de scripts intégré [ISE] de Windows PowerShell. Tapez 
    les commandes et enregistrez-les dans un fichier avec un nom de 
    fichier valide et l'extension de nom de fichier .ps1. 

    L'exemple suivant est un script simple qui obtient les services 
    en cours d'exécution sur le système actuel et les enregistre dans 
    un fichier journal. Le nom du fichier journal est créé à partir 
    de la date actuelle.

        $date = (get-date).dayofyear
        get-service | out-file "$date.log"

    Pour créer ce script, ouvrez un éditeur de texte ou un éditeur 
    de script, tapez ces commandes, puis enregistrez-les dans un fichier 
    nommé ServiceLog.ps1. 


  COMMENT EXÉCUTER UN SCRIPT

    Avant de pouvoir exécuter un script, vous devez modifier la 
    stratégie d'exécution Windows PowerShell par défaut. La stratégie 
    d'exécution par défaut, " Restricted ", empêche l'exécution de 
    tous les scripts, notamment ceux que vous écrivez sur 
    l'ordinateur local. Pour plus d'informations, consultez 
    about_Execution_Policies.

    Pour exécuter un script, tapez le nom complet et le chemin 
    d'accès complet au fichier de script. 

    Par exemple, pour exécuter le script ServicesLog dans le 
    répertoire C:\Scripts, tapez :

        c:\scripts\ServicesLog.ps1

    Pour exécuter un script dans le répertoire actif, tapez le chemin 
    d'accès à ce répertoire ou utilisez un point pour le représenter, 
    suivi d'une barre oblique inverse (.\).

    Par exemple, pour exécuter le script ServicesLog.ps1 dans le 
    répertoire local, tapez :

        .\ServicesLog.ps1

    En tant que fonctionnalité de sécurité, Windows PowerShell 
    n'exécute pas les scripts lorsque vous double-cliquez sur l'icône 
    de script dans l'Explorateur Windows ou que vous tapez le nom du 
    script sans un chemin d'accès complet, même quand le script est 
    dans le répertoire actif. Pour plus d'informations sur l'exécution 
    de commandes et de scripts dans Windows PowerShell, consultez 
    about_Command_Precedence.


  EXÉCUTION DE SCRIPTS À DISTANCE

    Pour exécuter un script sur un ordinateur distant, utilisez le 
    paramètre FilePath de l'applet de commande Invoke-Command.

    Entrez le chemin d'accès et le nom de fichier du script comme 
    valeur du paramètre FilePath. Le script doit se trouver sur 
    l'ordinateur local ou dans un répertoire auquel l'ordinateur 
    local peut accéder. 

    La commande suivante exécute le script ServicesLog.ps1 sur 
    l'ordinateur distant Server01.

        invoke-command -computername Server01 -filepath C:\scripts\servicesLog.ps1 



  PARAMÈTRES DANS LES SCRIPTS

    Pour définir des paramètres dans un script, utilisez une 
    instruction Param. L'instruction Param doit être la première 
    instruction dans un script, à l'exception des commentaires et des 
    instructions #Requires.

    Les paramètres de script fonctionnent comme les paramètres de 
    fonction. Les valeurs des paramètres sont disponibles pour toutes 
    les commandes dans le script. Toutes les fonctionnalités des 
    paramètres de fonction, notamment l'attribut Parameter et ses 
    arguments nommés, sont également valides dans les scripts.

    Lors de l'exécution du script, les utilisateurs du script tapent 
    les paramètres après le nom du script. 

    L'exemple suivant illustre un script Test-Remote.ps1 avec un 
    paramètre ComputerName. Les deux fonctions de script peuvent 
    accéder à la valeur du paramètre ComputerName.

        param ($ComputerName = $(throw "Le paramètre ComputerName est 
        requis."))

        function CanPing {
           $error.clear()
           $tmp = test-connection $computername -erroraction SilentlyContinue

           if (!$?) 
               {write-host "Échec du test Ping : $ComputerName."; return $false} else
               {write-host "Test ping réussi : $ComputerName"; return $true} }

        function CanRemote {
            $s = new-pssession $computername -erroraction SilentlyContinue

            if ($s -is [System.Management.Automation.Runspaces.PSSession]) 
                {write-host "Test distant réussi : $ComputerName."} 
            else
                {write-host "Échec du test distant : $ComputerName."} 
            }

        if (CanPing $computername) {CanRemote $computername}


    Pour exécuter ce script, tapez le nom du paramètre après le nom 
    du script.  Par exemple :

	C:\PS> .\test-remote.ps1 -computername Server01

	Test ping réussi : Server01
	Échec du test distant : Server01


    Pour plus d'informations sur l'instruction Param et les 
    paramètres de fonction, consultez about_Functions et 
    about_Functions_Advanced_Parameters.



  AIDE SUR LES SCRIPTS

    L'applet de commande Get-Help permet d'obtenir de l'aide sur les 
    scripts, mais aussi sur les applets de commande, les fournisseurs 
    et les fonctions. Pour obtenir de l'aide sur un script, tapez 
    Get-Help ainsi que le chemin d'accès et le nom de fichier du 
    script. Si le chemin d'accès au script est dans votre variable 
    d'environnement Path, vous pouvez l'omettre.

    Par exemple, pour obtenir de l'aide sur le script ServicesLog.ps1, tapez :

        get-help C:\admin\scripts\ServicesLog.ps1

    Vous pouvez écrire de l'aide pour un script à l'aide de l'une ou 
    l'autre des deux méthodes suivantes :

    --  Aide basée sur des commentaires pour les scripts

        Créez une rubrique d'aide en utilisant des mots clés spéciaux 
        dans les commentaires. Pour créer de l'aide basée sur des 
        commentaires pour un script, les commentaires doivent être 
        placés au début ou à la fin du fichier de script. Pour plus 
        d'informations sur l'aide basée sur des commentaires, consultez 
        about_Comment_Based_Help.

    --  Aide XML pour les scripts

        Créez une rubrique d'aide XML du type généralement créé pour 
        les applets de commande. L'aide XML est requise si vous 
        traduisez des rubriques d'aide dans plusieurs langues. 

        Pour associer le script à la rubrique d'aide XML, utilisez le 
        mot clé de commentaires d'aide .ExternalHelp. Pour plus 
        d'informations sur le mot clé ExternalHelp, consultez 
        about_Comment_Based_Help. Pour plus d'informations sur l'aide 
        XML, consultez " How to Write Cmdlet Help " (page éventuellement 
        en anglais) dans la bibliothèque MSDN (Microsoft Developer Network) 
        à l'adresse https://go.microsoft.com/fwlink/?LinkID=123415.



  PORTÉE DU SCRIPT ET APPEL DE SOURCE DE TYPE " DOT SOURCING "

    Chaque script est exécuté dans sa propre portée. Les fonctions, 
    variables, alias et lecteurs créés dans le script existent 
    uniquement dans la portée du script. Vous ne pouvez pas accéder 
    à ces éléments, ni à leurs valeurs, dans la portée dans laquelle 
    le script est exécuté.

    Pour exécuter un script dans une portée différente, vous pouvez 
    spécifier une portée, telle que Global ou Local, ou effectuer un 
    appel de source de type " dot sourcing " du script.

    La fonctionnalité d'appel de source de type " dot sourcing " vous 
    permet d'exécuter un script dans la portée actuelle plutôt que 
    dans la portée du script. Lorsque vous exécutez un script en 
    utilisant cette fonctionnalité, les commandes dans le script sont 
    exécutées comme si vous les aviez tapées à l'invite de commandes. 
    Les fonctions, variables, alias et lecteurs que le script crée 
    figurent dans la portée dans laquelle vous travaillez. Une fois 
    le script exécuté, vous pouvez utiliser les éléments créés et 
    accéder à leurs valeurs dans votre session.

    Pour effectuer un appel de source de type " dot sourcing " d'un 
    script, tapez un point (.) et un espace avant le chemin d'accès 
    au script.

    Par exemple :

        . C:\scripts\UtilityFunctions.ps1

    - ou -

        . .\UtilityFunctions.ps1


    Après l'exécution du script UtilityFunctions, les fonctions et 
    variables que le script crée sont ajoutées à la portée actuelle. 
    Par exemple, le script UtilityFunctions.ps1 crée la fonction 
    New-Profile et la variable $ProfileName.

        #In UtilityFunctions.ps1

        function New-Profile
        {
            Write-Host "Exécution de la fonction New-Profile" 
            $profileName = split-path $profile -leaf

            if (test-path $profile)
               {write-error "Il existe déjà un profil $profileName sur cet ordinateur."} 
            else
	       {new-item -type file -path $profile -force } 
         }


    Si vous exécutez le script UtilityFunctions.ps1 dans sa propre 
    portée, la fonction New-Profile et la variable $ProfileName 
    existent uniquement pendant l'exécution du script. Au terme de 
    l'exécution du script, la fonction et la variable sont 
    supprimées, comme illustré dans l'exemple suivant.

        C:\PS> .\UtilityFunctions.ps1

        C:\PS> New-Profile
        Le terme " new-profile " n'est pas reconnu en tant qu'applet 
        de commande, fonction, programme exécutable ou fichier de 
        script. Vérifiez le terme et réessayez.
        À la ligne : 1 Caractère : 12
        + new-profile <<<< 
           + CategoryInfo          : ObjectNotFound: (new-profile:String) [], 
           + FullyQualifiedErrorId : CommandNotFoundException

        C:\PS> $profileName
        C:\PS>


    Lorsque vous effectuez un appel de source de type " dot 
    sourcing " du script et l'exécutez, il crée la fonction 
    New-Profile et la variable $ProfileName dans votre session dans 
    votre portée. Après l'exécution du script, vous pouvez utiliser 
    la fonction New-Profile dans votre session, comme illustré dans 
    l'exemple suivant.

        C:\PS> . .\UtilityFunctions.ps1

        C:\PS> New-Profile


            Directory: C:\Users\juneb\Documents\WindowsPowerShell


            Mode    LastWriteTime     Length Name 
            ----    -------------     ------ ----
            -a---   14/1/2009 15:08      0 Microsoft.PowerShellISE_profile.ps1


        C:\PS> $profileName
        Microsoft.PowerShellISE_profile.ps1


    Pour plus d'informations sur la portée, consultez about_Scopes.



  SCRIPTS DANS LES MODULES

    Un module est un ensemble de ressources Windows PowerShell 
    associées qui peuvent être distribuées comme une unité. Vous 
    pouvez utiliser les modules pour organiser vos scripts, fonctions 
    et autres ressources. Vous pouvez également les utiliser pour 
    distribuer votre code à d'autres utilisateurs et obtenir du code 
    de sources fiables.

    Vous pouvez inclure des scripts dans vos modules ou créer un 
    module de script, qui est un module constitué entièrement ou 
    principalement d'un script et de ressources de prise en charge. 
    Un module de script est simplement un script avec une extension 
    de nom de fichier .psm1.

    Pour plus d'informations sur les modules, consultez about_Modules.



  AUTRES FONCTIONNALITÉS DE SCRIPT 

    Windows PowerShell a de nombreuses fonctionnalités utiles que 
    vous pouvez utiliser dans les scripts.

    #Requires 
        Vous pouvez utiliser une instruction #Requires pour empêcher 
        l'exécution d'un script sans les modules ou composants 
        logiciels enfichables spécifiés et une version spécifiée de 
        Windows PowerShell. Pour plus d'informations, consultez 
        about_Requires.

    $MyInvocation
        La variable automatique $MyInvocation contient des 
        informations sur la commande actuelle, notamment le script 
        actuel. Vous pouvez utiliser cette variable et ses propriétés 
        pour obtenir des informations sur le script pendant qu'il 
        s'exécute. Par exemple, la variable $MyInvocation.MyCommand.Pa
        th contient le chemin d'accès et le nom de fichier du script.

    Sections Data
        Vous pouvez utiliser le mot clé Data pour isoler des données 
        de la logique des scripts. Les sections Data peuvent également 
        simplifier la localisation. Pour plus d'informations, consultez 
        about_Data_Sections et about_Script_Localization.

    Signature du script
        Vous pouvez ajouter une signature numérique à un script. 
        Selon la stratégie d'exécution, vous pouvez utiliser des 
        signatures numériques pour limiter l'exécution de scripts qui 
        pourraient inclure des commandes potentiellement dangereuses. 
        Pour plus d'informations, consultez about_Execution_Policies 
        et about_Signing.



VOIR AUSSI
    about_Command_Precedence
    about_Comment_Based_Help
    about_Execution_Policies
    about_Functions
    about_Modules
    about_Profiles
    about_Requires
    about_Scopes
    about_Script_Blocks
    about_Signing
    Invoke-Command




Table des matières