- forum
- PowerShell
- Entraide pour les débutants
- Utiliser read-host Script avec binding (parametres obligatoire)
Question
Utiliser read-host Script avec binding (parametres obligatoire)
- YOUSSOUF CAMARA
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 4 ans 7 mois #29875
par YOUSSOUF CAMARA
Bonjour,
Je cherche comment faire en sorte que le paramètre obligatoire d'un cmdlet bindings soit une variable ou saisir par l'utilisateur dans un read-host.
Soit le script toto.ps1 qui attend toujours un paramètre -samAccountName $username.
$username doit être renseigné dès le début du script
Mon souci actuel est qu'on est obligé pour exécuter le script de la commande suivante
C:\Users\Sylar\Desktop>.\toto.ps -SamAccountname YXY
Comment mettre de place un read-host pour remplacer YXY
Je cherche comment faire en sorte que le paramètre obligatoire d'un cmdlet bindings soit une variable ou saisir par l'utilisateur dans un read-host.
Soit le script toto.ps1 qui attend toujours un paramètre -samAccountName $username.
$username doit être renseigné dès le début du script
Mon souci actuel est qu'on est obligé pour exécuter le script de la commande suivante
C:\Users\Sylar\Desktop>.\toto.ps -SamAccountname YXY
Comment mettre de place un read-host pour remplacer YXY
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 4 ans 7 mois #29877
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Utiliser read-host Script avec binding (parametres obligatoire)
Salut,
un début de piste :Le premier attribut est utilisé par le binding mais ne persiste pas sur la variable, à vérifier.
Et la présence de ErrorAction évite de coder dans l'exemple une gestion d'erreur, à toi de voir ce point.
Il y a aussi les variables liées , mais ça semble une mauvaise piste ici...
un début de piste :
Function Test{
param(
[ValidateNotNullOrEmpty()]
[string] $S=(Read-Host 'Entrez une valeur')
)
$ErrorActionPreference='Stop'
[ValidateNotNullOrEmpty()] [string] $VarContrainte=$S
Write-Warning "S='$VarContrainte'"
}
Et la présence de ErrorAction évite de coder dans l'exemple une gestion d'erreur, à toi de voir ce point.
Il y a aussi les variables liées , mais ça semble une mauvaise piste ici...
Tutoriels PowerShell
Les utilisateur(s) suivant ont remercié: YOUSSOUF CAMARA
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
- Hors Ligne
- Modérateur
il y a 4 ans 7 mois - il y a 4 ans 7 mois #29879
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Utiliser read-host Script avec binding (parametres obligatoire)
Bonjour Firedaway,
Une alternative à ce que te propose Laurent est ceci :
L'attribut [CmdletBinding] n'est pas obligatoire mais il est recommandé. Il indique à PowerShell d'activer le mode "fonctions avancées". C'est une bonne pratique de le mettre. Ainsi ton script (ou ta fonction) te permettra d'utiliser tous les paramètres communs de PowerShell tels que Whatif, Verbose, Debug, etc.
Aussi pas besoin de Read-Host car le fait de définir un paramètre comme étant obligatoire fait que PowerShell va t'afficher un prompt de saisie du paramètre si tu ne l'as pas indiqué sur la ligne de commandes.
Arnaud
Une alternative à ce que te propose Laurent est ceci :
[CmdletBinding()]
Param (
[Parameter(Mandatory)]
[String] $SamAccountName
)
"La valeur du SamAccountName est: $SamAccountName"
L'attribut [CmdletBinding] n'est pas obligatoire mais il est recommandé. Il indique à PowerShell d'activer le mode "fonctions avancées". C'est une bonne pratique de le mettre. Ainsi ton script (ou ta fonction) te permettra d'utiliser tous les paramètres communs de PowerShell tels que Whatif, Verbose, Debug, etc.
Aussi pas besoin de Read-Host car le fait de définir un paramètre comme étant obligatoire fait que PowerShell va t'afficher un prompt de saisie du paramètre si tu ne l'as pas indiqué sur la ligne de commandes.
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Dernière édition: il y a 4 ans 7 mois par Arnaud Petitjean. Raison: Ajout d'un complément d'informations
Connexion ou Créer un compte pour participer à la conversation.
- YOUSSOUF CAMARA
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 4 ans 7 mois - il y a 4 ans 7 mois #29882
par YOUSSOUF CAMARA
Réponse de YOUSSOUF CAMARA sur le sujet Utiliser read-host Script avec binding (parametres obligatoire)
Bonjour ,
Merci pour vos retours.
j'ai essayé la solution : j'ai le message d'erreur.
Merci pour vos retours.
j'ai essayé la solution : j'ai le message d'erreur.
PS C:\Windows\system32> C:\Temp\toto.ps1
la valeur du SamAccountname est :
begin : Le terme «begin» n'est pas reconnu comme nom d'applet de commande, fonction, fichier de script ou
programme exécutable. Vérifiez l'orthographe du nom, ou si un chemin d'accès existe, vérifiez que le chemin
d'accès est correct et réessayez.
Au caractère C:\Temp\toto.ps1:15 : 1
+ begin {
+ ~~~~~
+ CategoryInfo : ObjectNotFound: (begin:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Get-Process : Impossible d'évaluer le paramètre «Name», car son argument est spécifié en tant que bloc de
script et qu'il n'y a pas d'entrée. Un bloc de script ne peut pas être évalué sans entrée.
Au caractère C:\Temp\toto.ps1:539 : 9
+ process {
+ ~
+ CategoryInfo : MetadataError: (:) [Get-Process], ParameterBindingException
+ FullyQualifiedErrorId : ScriptBlockArgumentNoInput,Microsoft.PowerShell.Commands.GetProcessCommand
end : Le terme «end» n'est pas reconnu comme nom d'applet de commande, fonction, fichier de script ou
programme exécutable. Vérifiez l'orthographe du nom, ou si un chemin d'accès existe, vérifiez que le chemin
d'accès est correct et réessayez.
Au caractère C:\Temp\toto.ps1:969 : 1
+ end {
+ ~~~
+ CategoryInfo : ObjectNotFound: (end:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Dernière édition: il y a 4 ans 7 mois par Arnaud Petitjean.
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
- Hors Ligne
- Modérateur
il y a 4 ans 7 mois #29883
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Utiliser read-host Script avec binding (parametres obligatoire)
Pourrais-tu publier tout ton code STP ?
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 4 ans 7 mois #29884
par Laurent Dardenne
Je part du principe que si un paramètre est obligatoire, il faut le renseigner sur la ligne de commande, ici ça permet de laisser une seconde chance de le renseigner.
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Utiliser read-host Script avec binding (parametres obligatoire)
C'est beaucoup mieux , je faisais du hors piste.Arnaud écrit: Une alternative à ce que te propose Laurent est ceci :
Je part du principe que si un paramètre est obligatoire, il faut le renseigner sur la ligne de commande, ici ça permet de laisser une seconde chance de le renseigner.
Tutoriels PowerShell
Les utilisateur(s) suivant ont remercié: YOUSSOUF CAMARA
Connexion ou Créer un compte pour participer à la conversation.
- forum
- PowerShell
- Entraide pour les débutants
- Utiliser read-host Script avec binding (parametres obligatoire)
Temps de génération de la page : 0.110 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Utiliser read-host Script avec binding (parametres obligatoire)