Question
Passage de variables
- Lymnia
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 52
- Remerciements reçus 0
il y a 16 ans 5 mois #5363
par Lymnia
Pour WMI, pensez à scriptomatic ça peut aider quand on connait pas la classe que l'on voudrait utiliser.
Passage de variables a été créé par Lymnia
Bien le bonjour,
J'ai une petite question.
J'ai fait une petite recherche sur le forum mais il me semble pas que la question est été posée.
Enfin voilà, connaissez vous en Batch :
[code:1]@SET DemandeType=%1 [/code:1]
Cela permet dans cmd de passer une variable au moment où nous lançons le script. Je crois que cela s'appelle un passage de paramètre (
Dîtes moi si mon vocabulaire est mauvais)
Savez vous si powershell permet de faire la même chose ?
Peut être avec le read-host mais je suis pas certain.
J'ai une petite question.
J'ai fait une petite recherche sur le forum mais il me semble pas que la question est été posée.
Enfin voilà, connaissez vous en Batch :
[code:1]@SET DemandeType=%1 [/code:1]
Cela permet dans cmd de passer une variable au moment où nous lançons le script. Je crois que cela s'appelle un passage de paramètre (
Savez vous si powershell permet de faire la même chose ?
Peut être avec le read-host mais je suis pas certain.
Pour WMI, pensez à scriptomatic ça peut aider quand on connait pas la classe que l'on voudrait utiliser.
Connexion ou Créer un compte pour participer à la conversation.
- moka
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 1
- Remerciements reçus 0
il y a 16 ans 5 mois #5366
par moka
Réponse de moka sur le sujet Re:Passage de variables
Bonjour,
Je pense que ce que vous cherchez est tout simplement :
[code:1]param($DemandeType=$( `
Throw \"Parametre manquant: -DemandeType Demande\"«»)) `
[/code:1]
Vous pouvez spécifier le type de paramètre exigé (int, string) entre crochets devant la variable.
Cordialement,
moka
moka-works.com
Je pense que ce que vous cherchez est tout simplement :
[code:1]param($DemandeType=$( `
Throw \"Parametre manquant: -DemandeType Demande\"«»)) `
[/code:1]
Vous pouvez spécifier le type de paramètre exigé (int, string) entre crochets devant la variable.
Cordialement,
moka
moka-works.com
Connexion ou Créer un compte pour participer à la conversation.
- Lymnia
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 52
- Remerciements reçus 0
il y a 16 ans 5 mois #5367
par Lymnia
Pour WMI, pensez à scriptomatic ça peut aider quand on connait pas la classe que l'on voudrait utiliser.
Réponse de Lymnia sur le sujet Re:Passage de variables
Tout d'abords merci pour ta réponse.
je n'ai pas testé ta commande, mais il me semble qu'elle oblige l'utilisateur à rentrer une valeur non ?
Moi je cherche plus à recréer l'effet du moins -a dans la commande : [code:1]ping -a machine[/code:1]
Le paramètre \"-a\" n'est pas obligatoire et si on le mais pas ça pose pas de problème.
Je me suis peut être mal exprimé: mon script si on le lance simplement doit me créer une simple page html mais si on rajoute un type d'extension comme .csv, ben le script sort un fichier .csv
Cordialement<br><br>Message édité par: Lymnia, à: 29/09/09 14:26
je n'ai pas testé ta commande, mais il me semble qu'elle oblige l'utilisateur à rentrer une valeur non ?
Moi je cherche plus à recréer l'effet du moins -a dans la commande : [code:1]ping -a machine[/code:1]
Le paramètre \"-a\" n'est pas obligatoire et si on le mais pas ça pose pas de problème.
Je me suis peut être mal exprimé: mon script si on le lance simplement doit me créer une simple page html mais si on rajoute un type d'extension comme .csv, ben le script sort un fichier .csv
Cordialement<br><br>Message édité par: Lymnia, à: 29/09/09 14:26
Pour WMI, pensez à scriptomatic ça peut aider quand on connait pas la classe que l'on voudrait utiliser.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 16 ans 5 mois #5368
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Passage de variables
Lymnia écrit:
[code:1]-nomParamétre Valeur -SwitchMachin[/code:1]
Ensuite c'est toi qui en détermine l'usage, notamment la gestion de la valeur par défaut des paramètres.
Lymnia écrit:
Que ce soit un paramètre ou un switch l'usage du code suivant fonctionne :Moi je cherche plus à recréer l'effet du moins -a dans la commande
[code:1]-nomParamétre Valeur -SwitchMachin[/code:1]
Ensuite c'est toi qui en détermine l'usage, notamment la gestion de la valeur par défaut des paramètres.
Lymnia écrit:
Bien qu'ici ce soit plutot un switch qu'il faille utiliser plutot qu'un paramètre.mon script si on le lance simplement doit me créer une simple page html mais si on rajoute un type d'extension comme .csv, ben le script sort un fichier .csv
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Lymnia
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 52
- Remerciements reçus 0
il y a 16 ans 5 mois #5373
par Lymnia
Pour WMI, pensez à scriptomatic ça peut aider quand on connait pas la classe que l'on voudrait utiliser.
Réponse de Lymnia sur le sujet Re:Passage de variables
Ok, ça doit résoudre mon problème 
Il me reste plus qu'à comprendre comment cela fonctionne:laugh:
merci
Il me reste plus qu'à comprendre comment cela fonctionne:laugh:
merci
Pour WMI, pensez à scriptomatic ça peut aider quand on connait pas la classe que l'on voudrait utiliser.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 16 ans 5 mois #5376
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Passage de variables
Je ne pense pas que cela réponde à ton besoin, mais voici un petit exercice autour de ta demande.
On cherche à gérer une extension de fichier et un nom de format, un seul à la fois.
Il existe une extension par défaut mais on peut la remplacer via la ligne de commande.
[code:1]
Function TestParams( [string] $FileExtension,
[switch] $HTML,
[switch] $CSV,
[switch] $XL){
#Impose que les noms des switchs soient identiques au nom des clé
$FormatsExtensions=@{Html=\".html\"; CSV=\".csv\"; XL=\".xls\"}
$DefaultFormat=\"Html\"
function GetName([string]$Name){
#renvoi l'extension du fichier et le nom du format
if ($FileExtension -eq [string]::Empty )
{$FormatsExtensions.\"$Name\"}
else {$FileExtension}
$Name
}
$Result= $FormatsExtensions.GetEnumerator()|
Get-Variable|
Where {$_.Value}
if ($Result -eq $null) #Aucun switch de déclarer sur la ligne de commande
{$DefaultExtension,$DefaultFormat= GetName $DefaultFormat}
elseif ($Result.count -gt 1)
{Throw \"Déclarez un seul switch.\" }
else {$DefaultExtension,$DefaultFormat= GetName $Result.Name}
Write-host \"Format = $DefaultFormat\"
Write-host \"Extension = $DefaultExtension\"
}
#Quelques tests
TestParams -File \".aspx\"
TestParams -csv
TestParams -csv -f \".Txt\"
TestParams -csv -xl
[/code:1]
L'objectif étant de pouvoir déclarer n switch sans avoir à retoucher au code, juste la hashtable. Si on ajoute un nouveau switch qui ne référence pas un format mais autre chose, -Verbose, cela ne fonctionne plus tel quel.
Cette approche ne suit pas vraiment la philosophie de PowerShell.
On cherche à gérer une extension de fichier et un nom de format, un seul à la fois.
Il existe une extension par défaut mais on peut la remplacer via la ligne de commande.
[code:1]
Function TestParams( [string] $FileExtension,
[switch] $HTML,
[switch] $CSV,
[switch] $XL){
#Impose que les noms des switchs soient identiques au nom des clé
$FormatsExtensions=@{Html=\".html\"; CSV=\".csv\"; XL=\".xls\"}
$DefaultFormat=\"Html\"
function GetName([string]$Name){
#renvoi l'extension du fichier et le nom du format
if ($FileExtension -eq [string]::Empty )
{$FormatsExtensions.\"$Name\"}
else {$FileExtension}
$Name
}
$Result= $FormatsExtensions.GetEnumerator()|
Get-Variable|
Where {$_.Value}
if ($Result -eq $null) #Aucun switch de déclarer sur la ligne de commande
{$DefaultExtension,$DefaultFormat= GetName $DefaultFormat}
elseif ($Result.count -gt 1)
{Throw \"Déclarez un seul switch.\" }
else {$DefaultExtension,$DefaultFormat= GetName $Result.Name}
Write-host \"Format = $DefaultFormat\"
Write-host \"Extension = $DefaultExtension\"
}
#Quelques tests
TestParams -File \".aspx\"
TestParams -csv
TestParams -csv -f \".Txt\"
TestParams -csv -xl
[/code:1]
L'objectif étant de pouvoir déclarer n switch sans avoir à retoucher au code, juste la hashtable. Si on ajoute un nouveau switch qui ne référence pas un format mais autre chose, -Verbose, cela ne fonctionne plus tel quel.
Cette approche ne suit pas vraiment la philosophie de PowerShell.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.048 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Passage de variables