Comment passer les parameters nécessaires au script dans Powershell ISE?

Voir le titre.

J’ai spécifié les parameters nécessaires dans la tête d’un script:

param ($G_ARCHIVE = $(throw "Need file to upload!"), $G_LOGFILE = $(throw "Need logfile!")) 

Quand je veux déboguer le script avec Powershell ISE: comment puis-je remplir ces parameters?

    Utilisez le volet de commande. Ouvrez le fichier de script dans l’éditeur ISE, définissez les points d’arrêt (F9). Puis, dans le volet de commandes, tapez une commande appelant ce script avec les parameters requirejs. Je ne pense pas qu’il y ait une autre façon (intégrée) de le faire dans ISE.

    1. Ouvrez le script (myscript.ps1) dans Windows Powershell ISE
    2. Appuyez sur F9 à la variable que vous souhaitez inspecter (débogage). Par exemple 2ème ligne dans l’exemple ci-dessous où la variable $ outputText est affectée
    3. Dans la fenêtre shell, indiquez le chemin relatif du script avec la valeur param. Par exemple:. \ Myscript.ps1 “ma valeur”
    4. Appuyez sur Entrée (vous n’avez pas besoin d’ appuyer sur F5 )
    5. Vous pourrez voir les points d’arrêt de débogage en jaune. Placez votre curseur sur la variable souhaitée pour inspecter la valeur actuelle.

    Un exemple montrant le débogage PowerShell avec ISE et le paramètre de commande

    Il y a une autre façon. Vous pouvez utiliser la variable automatique $PSDefaultParameterValues , qui existe (depuis la version 3) pour fournir de nouveaux arguments par défaut aux applets de commande et aux fonctions avancées (ne fonctionne pas avec les fonctions normales). Cependant, il fonctionne pour les scripts, même lors du débogage dans ISE. Vous devez déclarer [CmdletBinding()] ou [Parameter()] comme vous le feriez pour une fonction avancée.

    Donc, pour votre exemple,

     [CmdletBinding()] param ($G_ARCHIVE = $(throw "Need file to upload!"), $G_LOGFILE = $(throw "Need logfile!")) 

    vous exécuteriez quelque chose comme ceci sur l’invite ISE:

     $PSDefaultParameterValues.add("ExampleScript.ps1:G_ARCHIVE","File-to-upload.txt") $PSDefaultParameterValues.add("ExampleScript.ps1:G_LOGFILE","Example.log") 

    Vous pouvez également définir la valeur du paramètre sur un bloc de script qui s’exécutera automatiquement au moment de l’exécution:

     $PSDefaultParameterValues["ExampleScript.ps1:G_LOGFILE"]={ "Example-{0:yyMMddHHmm}.log" -f [datetime]::Now } 

    La variable est une table de hachage et toute la syntaxe standard s’applique, sauf que la clé doit avoir le nom du script (ou une fonction ou une applet de commande avancée) suivi de deux points, puis du nom du paramètre. Vous pouvez définir des valeurs par défaut pour plusieurs scripts ou commandes, ainsi que plusieurs parameters pour chacun (chaque paramètre est une nouvelle entrée de table).

    De cette façon, vous pouvez simplement appuyer sur F5 pour exécuter votre script normalement. Les parameters seront extraits de la variable, vous n’avez donc pas à saisir quoi que ce soit.

    Les autres cas d’utilisation de $PSDefaultParameterValues peuvent être des personnalisations, comme si Get-History -Count que les 10 dernières entrées, sauf si vous spécifiez le paramètre -Count dans la commande. Comme les entrées persistent uniquement pour la session en cours, vous souhaitez append des personnalisations à votre profil . Vous pouvez en lire plus en tapant Get-Help about_Parameters_Default_Values à l’invite ou en Get-Help about_Parameters_Default_Values les mêmes informations sur TechNet .

    Il existe un moyen beaucoup plus simple de définir les parameters nécessaires dans ISE:

    Avant d’appuyer sur F5 dans ISE, définissez le paramètre dont vous avez besoin. Je commente habituellement le paramètre dont j’ai besoin, par exemple: # $ G_ARCHIVE = “C: \ Temp \ TestFile_001.txt”

    Je sélectionne tout après “#” et appuyez sur F8 . La prochaine fois que je débogue le script avec F5 , le paramètre est défini sur la valeur que je teste, il n’est pas nécessaire de passer les parameters via la ligne de commande.