Question
(Résolu) tâches planifiées avec arguments
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 14 ans 8 mois #5181
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:tâches planifiées avec arguments
skeleton18 écrit:
Peux-tu nous communiquer l'entête du script, i.e. le contenu de la clause param.Il me demande de rentrer les valeurs pour les paramètres -f (pour folder) et -t (pour time)...
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- PULVERAIL
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 36
- Remerciements reçus 0
il y a 14 ans 8 mois #5182
par PULVERAIL
Réponse de PULVERAIL sur le sujet Re:tâches planifiées avec arguments
Voilà :
[code:1]function Launch() {
#region Parameters
## Paramètre en entrée de la fonction : Nom du dossier ##
param([String]$folder = $(Read-Host \"Nom du dossier (valeurs autorisées : AKW, ENP, NWW3, WNA, USGODAE, GOES, JASON2, CHLO, HYCOM, GFS) \"«»), [String]$time = $(Read-Host \"Heure du téléchargement (valeurs autorisées : 00, 06, 12, 18) \"«»))
#endregion
#region ParametersTests
## Test de la valeur en entrée $folder ##
while ( !(($folder -match \"AKW\"«») -or ($folder -match \"ENP\"«») -or ($folder -match \"NWW3\"«») -or ($folder -match \"WNA\"«») -or ($folder -match \"USGODAE\"«») -or ($folder -match \"GOES\"«») -or ($folder -match \"JASON2\"«») -or ($folder -match \"CHLO\"«») -or ($folder -match \"HYCOM\"«») -or ($folder -match \"GFS\"«»)) ) {
[String]$folder = $(Read-Host \"Entrer un dossier correct (valeurs autorisées : AKW, ENP, NWW3, WNA, USGODAE, GOES, JASON2, CHLO, HYCOM, GFS) \"«»)
}
## Test de la valeur en entrée $time ##
if ( !(($folder -match \"USGODAE\"«») -or ($folder -match \"GOES\"«») -or ($folder -match \"JASON2\"«») -or ($folder -match \"CHLO\"«») -or ($folder -match \"HYCOM\"«»)) ) {
while ( !(($time -match \"00\"«») -or ($time -match \"06\"«») -or ($time -match \"12\"«») -or ($time -match \"18\"«»)) ) {
[String]$time = $(Read-Host \"Entrez une heure correcte (valeurs autorisées : 00, 06, 12, 18) \"«»)
}
}
#endregion[/code:1]
Après commence la partie traitement de mon script...
[code:1]function Launch() {
#region Parameters
## Paramètre en entrée de la fonction : Nom du dossier ##
param([String]$folder = $(Read-Host \"Nom du dossier (valeurs autorisées : AKW, ENP, NWW3, WNA, USGODAE, GOES, JASON2, CHLO, HYCOM, GFS) \"«»), [String]$time = $(Read-Host \"Heure du téléchargement (valeurs autorisées : 00, 06, 12, 18) \"«»))
#endregion
#region ParametersTests
## Test de la valeur en entrée $folder ##
while ( !(($folder -match \"AKW\"«») -or ($folder -match \"ENP\"«») -or ($folder -match \"NWW3\"«») -or ($folder -match \"WNA\"«») -or ($folder -match \"USGODAE\"«») -or ($folder -match \"GOES\"«») -or ($folder -match \"JASON2\"«») -or ($folder -match \"CHLO\"«») -or ($folder -match \"HYCOM\"«») -or ($folder -match \"GFS\"«»)) ) {
[String]$folder = $(Read-Host \"Entrer un dossier correct (valeurs autorisées : AKW, ENP, NWW3, WNA, USGODAE, GOES, JASON2, CHLO, HYCOM, GFS) \"«»)
}
## Test de la valeur en entrée $time ##
if ( !(($folder -match \"USGODAE\"«») -or ($folder -match \"GOES\"«») -or ($folder -match \"JASON2\"«») -or ($folder -match \"CHLO\"«») -or ($folder -match \"HYCOM\"«»)) ) {
while ( !(($time -match \"00\"«») -or ($time -match \"06\"«») -or ($time -match \"12\"«») -or ($time -match \"18\"«»)) ) {
[String]$time = $(Read-Host \"Entrez une heure correcte (valeurs autorisées : 00, 06, 12, 18) \"«»)
}
}
#endregion[/code:1]
Après commence la partie traitement de mon script...
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 14 ans 7 mois #5184
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:tâches planifiées avec arguments
skeleton18 écrit:
As-tu un appel interne à la fonction Launch ?
C'est un script ou un fichier contenant la déclaration d'une fonction ?Après commence la partie traitement de mon script...
As-tu un appel interne à la fonction Launch ?
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- PULVERAIL
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 36
- Remerciements reçus 0
il y a 14 ans 7 mois #5185
par PULVERAIL
Réponse de PULVERAIL sur le sujet Re:tâches planifiées avec arguments
je crois que ça va être plus simple si je joins le fichier de script!!
La pièce jointe launch.ps1 est absente ou indisponible
Pièces jointes :
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 14 ans 7 mois #5188
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:tâches planifiées avec arguments
skeleton18 écrit:
Si tu veux propager les paramètres du script à la fonction Lauch, il doit lui même contenir une clause param identique à celle de la fonction.
[code:1]Launch -f $folder -t $time[/code:1]
Ici tu passes bien les paramètres mais $folder et $time ne sont pas renseignés dans le script, de plus ils sont \"transformés\" dans la fonction.
Ajoute ceci au début du script et au début de la fonction :
[code:1]
$MyInvocation
$folder -eq $null
$time -eq $null
$folder -eq [String]::Empty
$time -eq [String]::Empty
[/code:1]
cela nous donne :
[code:1]
MyCommand : launch.ps1
ScriptLineNumber : 1
OffsetInLine : -2147483648
ScriptName :
Line : .\launch.ps1
PositionMessage :
Au niveau de ligne : 1 Caractère : 12
+ .\launch.ps1 <<<<
InvocationName : .\launch.ps1
PipelineLength : 1
PipelinePosition : 1
True
True
False
False
MyCommand : Launch
ScriptLineNumber : 166
OffsetInLine : 7
ScriptName : G:\ps\temp\launch.ps1
Line : Launch -f $folder -t $time
PositionMessage :
Au niveau de G:\ps\temp\launch.ps1 : 166 Caractère : 7
+ Launch <<<< -f $folder -t $time
InvocationName : Launch
PipelineLength : 1
PipelinePosition : 1
False
False
True
True
[/code:1]
Dans le script $folder et $time sont à $null et dans la fonction ils deviennent des chaînes vides.
Pour PS $null est une valeur et une chaîne vide est une chaîne renseigné.
C'est le pourquoi de ce script sur la validation des paramètre .
Tu peux insérer ces lignes là :
[code:1]
Test-Variable (gv folder) String -TestEmptyString
Test-Variable (gv timer) String -TestEmptyString
[/code:1]
C'est un peu lourd comme approche, mais cela évite des séances de débug
PowerShell c'est comme le saut à l'élastique, c'est fantastique !!!
+1je crois que ça va être plus simple si je joins le fichier de script!!
Si tu veux propager les paramètres du script à la fonction Lauch, il doit lui même contenir une clause param identique à celle de la fonction.
[code:1]Launch -f $folder -t $time[/code:1]
Ici tu passes bien les paramètres mais $folder et $time ne sont pas renseignés dans le script, de plus ils sont \"transformés\" dans la fonction.
Ajoute ceci au début du script et au début de la fonction :
[code:1]
$MyInvocation
$folder -eq $null
$time -eq $null
$folder -eq [String]::Empty
$time -eq [String]::Empty
[/code:1]
cela nous donne :
[code:1]
MyCommand : launch.ps1
ScriptLineNumber : 1
OffsetInLine : -2147483648
ScriptName :
Line : .\launch.ps1
PositionMessage :
Au niveau de ligne : 1 Caractère : 12
+ .\launch.ps1 <<<<
InvocationName : .\launch.ps1
PipelineLength : 1
PipelinePosition : 1
True
True
False
False
MyCommand : Launch
ScriptLineNumber : 166
OffsetInLine : 7
ScriptName : G:\ps\temp\launch.ps1
Line : Launch -f $folder -t $time
PositionMessage :
Au niveau de G:\ps\temp\launch.ps1 : 166 Caractère : 7
+ Launch <<<< -f $folder -t $time
InvocationName : Launch
PipelineLength : 1
PipelinePosition : 1
False
False
True
True
[/code:1]
Dans le script $folder et $time sont à $null et dans la fonction ils deviennent des chaînes vides.
Pour PS $null est une valeur et une chaîne vide est une chaîne renseigné.
C'est le pourquoi de ce script sur la validation des paramètre .
Tu peux insérer ces lignes là :
[code:1]
Test-Variable (gv folder) String -TestEmptyString
Test-Variable (gv timer) String -TestEmptyString
[/code:1]
C'est un peu lourd comme approche, mais cela évite des séances de débug
PowerShell c'est comme le saut à l'élastique, c'est fantastique !!!
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- PULVERAIL
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 36
- Remerciements reçus 0
il y a 14 ans 7 mois #5194
par PULVERAIL
Réponse de PULVERAIL sur le sujet Re:tâches planifiées avec arguments
J'ai compris ce que tu m'as dit dans ton précédent post... Mais j'ai solutionné mon problème d'une autre façon. En fait, au lieu de passer mes valeurs en tant que paramètres, je les passe en tant qu'arguments dont je récupère les valeurs dans $args.
Je ne sais pas si c'est la meilleure solution pour le moment. Mais étant en stage (qui se termine bientôt), il faut que je produise un truc qui marche.
Et si j'ai un peu de temps à la fin, j'essaierai de basculer vers les paramètres.
En tout cas, merci pour toute l'aide que tu m'as apporté : elle m'a été très précieuse tout au long de mon stage, tout comme celle de arnaud et robin!!
Je ne sais pas si c'est la meilleure solution pour le moment. Mais étant en stage (qui se termine bientôt), il faut que je produise un truc qui marche.
Et si j'ai un peu de temps à la fin, j'essaierai de basculer vers les paramètres.
En tout cas, merci pour toute l'aide que tu m'as apporté : elle m'a été très précieuse tout au long de mon stage, tout comme celle de arnaud et robin!!
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.083 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- (Résolu) tâches planifiées avec arguments