De nombreuses personnes aiment utiliser PowerShell car cela leur permet de faire des choses qui ne peuvent pas être faites avec l'interface graphique Windows. Même ainsi, il est indéniable que certaines applets de commande PowerShell peuvent être un peu fastidieuses ou compliquées. Mais et s’il existait un moyen de pouvoir modifier ces applets de commande et de les faire « se comporter » comme vous le souhaitez ? Croyez-le ou non, il existe un moyen simple de le faire. Vous pouvez modifier le comportement de l'applet de commande en modifiant les valeurs des paramètres par défaut de PowerShell. Cet article vous montrera comment utiliser les paramètres par défaut de PowerShell pour modifier le comportement des commandes d'applets de commande.
Avertissement
Avant de commencer, vous devez garder quelques points à l’esprit. Bien que la modification des paramètres par défaut de PowerShell et du comportement de cmdelt soit pratique, cela peut entraîner des problèmes. Si vous exécutez un script et que ce script suppose que l'applet de commande modifiée se comportera d'une certaine manière, vous risquez d'obtenir des résultats imprévisibles. Par conséquent, vous devez vous assurer de modifier soigneusement les paramètres par défaut de PowerShell.
Examen rapide
Vous devez connaître deux concepts PowerShell pour pouvoir utiliser les paramètres par défaut. Le premier concept est variable. Dans PowerShell, les noms de variables commencent toujours par un signe dollar et vous pouvez écrire le contenu d'une variable en tapant le nom de la variable.
Le deuxième concept que vous connaissez peut-être est la table de hachage. Une table de hachage est essentiellement une liste composée de paires clé/valeur. Par exemple, supposons que vous souhaitiez créer une table de hachage contenant les noms des États américains et leurs abréviations. Ci-dessous le code :
$StateList = @{}
$StateList.add('Floride','FL')
$StateList.add('Caroline du Sud','SC')
$StateList.add('Géorgie','GA')
$StateList
La première ligne de code crée une table de hachage vide appelée $StateList . Les trois lignes suivantes ajoutent des entrées au tableau. Chaque entrée est composée d'une clé (nom de l'état) et d'une valeur (abréviation de l'état). La dernière ligne répertorie le contenu du tableau. Vous pouvez voir le code en action dans l'image ci-dessous.
Ceci n'est qu'un exemple très simple et il existe de nombreuses autres façons d'utiliser les tables de hachage.
Travailler avec les paramètres par défaut de PowerShell
PowerShell possède une variable intégrée utilisée pour stocker les paramètres par défaut utilisés avec ses applets de commande. Cette variable s'appelle $PSDefaultParameterValues . Comme vous l'avez peut-être remarqué lors de l'introduction initiale et du nom de la variable, il ne s'agit pas d'une variable ordinaire mais d'une table de hachage. Cependant, si vous saisissez le nom de la variable dans PowerShell, vous verrez rapidement que le tableau est vide, comme indiqué ci-dessous.
Alors que pouvons-nous faire avec cette variable $PSDefaultParameterValues . Comme mentionné ci-dessus, vous pouvez contrôler le comportement des applets de commande PowerShell. Le seul point est que vous ne pouvez pas surmonter les capacités inhérentes de la commande cmdlet. Alors regardons un exemple.
Cet exemple n’est peut-être pas quelque chose que vous souhaitez utiliser dans la vie réelle, mais il vous montrera à quel point il est facile de modifier radicalement le comportement des applets de commande. Si vous entrez l'applet de commande Get-TimeZone dans PowerShell, vous verrez le nom du fuseau horaire pour lequel votre PC est actuellement configuré. Vous pouvez voir cet exemple dans l'image ci-dessous.
Nous modifions maintenant cette applet de commande afin qu'elle n'affiche pas le fuseau horaire pour lequel le système est configuré, mais plutôt les fuseaux horaires disponibles. Pour ce faire, nous avons besoin d'une syntaxe d'applet de commande utilisant la cmdlet Get-Help suivie de la cmdlet Get-TimeZone . Vous pouvez voir la syntaxe de l'applet de commande ci-dessous.
Cette syntaxe inclut un paramètre appelé ListAvailable . Entrez la commande ci-dessous :
$PSDefaultParameterValues.Add("Get-TimeZone:ListAvailable",$True)
La première partie de cette commande indique simplement à PowerShell que vous souhaitez ajouter une valeur à la table de hachage, tout comme nous l'avons fait avec l'exemple d'abréviation d'état américain dans la section précédente. Cette table de hachage contient une paire clé/valeur. Dans ce cas, la clé est le nom de l'applet de commande (Get-TimeZone) suivi d'une virgule et du nom du paramètre que vous souhaitez définir. Dans ce cas, le nom du paramètre est ListAvailable. La deuxième partie de cette applet de commande est la valeur que vous souhaitez attribuer au paramètre. Ici, c'est $True . Le paramètre ListAvailable n'a normalement pas besoin de valeur, donc spécifier $True est la façon dont vous dites à PowerShell d'utiliser ce paramètre sans lui attribuer de valeur.
Si vous regardez l'image ci-dessous, vous verrez ce qui se passe lorsque vous exécutez l'applet de commande Get-TimeZone.
Choses à garder à l'esprit
La chose la plus importante à comprendre est que l’ajout d’une nouvelle valeur pour un paramètre par défaut PowerShell consiste à modifier le comportement par défaut de l’applet de commande, et non à supprimer les fonctionnalités de l’applet de commande. Même lorsque vous modifiez l'applet de commande Get-TimeZone pour afficher les fuseaux horaires disponibles au lieu d'afficher le fuseau horaire actuel. Vous pouvez toujours afficher les informations de fuseau horaire actuel si vous en visualisez davantage.
Une autre chose que vous devez savoir est que les paramètres personnalisés par défaut peuvent être supprimés. Pour supprimer un seul élément, utilisez la commande $PSDefaultParameterValues.Remove , suivie du nom de l'élément que vous souhaitez supprimer. Par exemple:
$PSDefaultParameterValues.Remove("Get-TimeZone:ListAvailable")
Au lieu de cela, vous pouvez supprimer tout le contenu de la table de hachage à l'aide de cette commande :
$PSDefaultParameterValues.Clear();
Vous pouvez voir des exemples des deux techniques ci-dessous :
Vous pouvez supprimer la totalité de la table de hachage ou supprimer une seule entrée.
Changer le comportement par défaut d’une commande d’applet de commande est quelque chose que vous ne faites pas souvent, mais lorsque vous en avez besoin, vous savez déjà comment le modifier.
Je vous souhaite du succès !
En savoir plus :