demande de rappel immédiat

Configurer des valeurs par défaut pour les paramètres des CmdLets dans PowerShell

Posted by Jean-Paul Blanc Tuesday, February 04, 2014 4:22:00 PM
Rate this Content 0 Votes

 

 

Il y a des CmdLets qui prennent beaucoups de paramètres. Dans certains cas on doit donner une valeurs (parfois longue) à certains paramètres pour que la Cmdlet nous retourne les données voulues. Il y a bien sûr la solution qui consiste à rapeller la commande précédente et à la modifier, mais voici deux moyens pour renseigner des paramètres une fois pour toute.

Dan l'exemple suivant j'utilise la CmdLet get-ADUser pour récupérer des information sur AD-LDS alors que Active-Directory est aussi présent sur le poste. Chaque CmdLet Active-Directory doit préciser le serveur et la partition de travail.

[0]= # Utilisation de CmdLet Active-Directory pour récupérer des informations sur AD-LDS 
[1]= Get-ADUser -Identity "76ec3f0d-f2ae-4d06-86c8-7aa6d16a66ef" -Server 'VMESS01:50000' -Partition 'o=silogix,c=fr'


DistinguishedName : CN=user1,OU=Monou,O=silogix,C=fr
Enabled           : False
GivenName         :
Name              : user1
ObjectClass       : user
ObjectGUID        : 76ec3f0d-f2ae-4d06-86c8-7aa6d16a66ef
SID               : S-1-460620379-1939377720-1799113530-1315713835-2496038799-4219964015
Surname           : user1
UserPrincipalName : user1@silogix.fr
 

1) Solution pour PowerShell V1.0 et V2.0

 Les première versions de PowerShell prévoient d'aglomérer les paramètres dans un tableau associatif (hashing table) et de passer la variable ainsi constituée comme un paramètre introduit par le caractère @.

[4]= # Méthode du "splatting", j'encapsule les paramètres dans une table 
[5]= $getADUserDefaultParams = @{"Server" ="VMESS01:50000"; "Partition" = "o=silogix,c=fr"}
[7]= # Appeler la CmdLet avec la table précédée du caractère @ 
[8]= Get-ADUser -Identity "76ec3f0d-f2ae-4d06-86c8-7aa6d16a66ef"  @getADUserDefaultParams


DistinguishedName : CN=user1,OU=Monou,O=silogix,C=fr
Enabled           : False
GivenName         :
Name              : user1
ObjectClass       : user
ObjectGUID        : 76ec3f0d-f2ae-4d06-86c8-7aa6d16a66ef
SID               : S-1-460620379-1939377720-1799113530-1315713835-2496038799-4219964015
Surname           : user1
UserPrincipalName : user1@silogix.fr

2) Solution pour PowerShell V3.0 et V4.0

Depuis la version 3.0 la variable automatique $PSDefaultParameterValues permet de définir des valeurs par défaut pour des paramètres de CmdLets (voir about_Parameters_Default_Values).

[11]= # Une variable est prévue à cet effet 
[12]= $PSDefaultParameterValues = @{"*-AD*:Server"="VMESS01:50000";"*-AD*:Partition" = "o=silogix,c=fr"}
[14]= # Les paramètres sont automatiquement affectés aux CmdLets correspondant 
[15]= Get-ADUser -Identity "76ec3f0d-f2ae-4d06-86c8-7aa6d16a66ef"


DistinguishedName : CN=user1,OU=Monou,O=silogix,C=fr
Enabled           : False
GivenName         :
Name              : user1
ObjectClass       : user
ObjectGUID        : 76ec3f0d-f2ae-4d06-86c8-7aa6d16a66ef
SID               : S-1-460620379-1939377720-1799113530-1315713835-2496038799-4219964015
Surname           : user1
UserPrincipalName : user1@silogix.fr

Comments are closed on this post.