Question (Résolu) tâches planifiées avec arguments

Plus d'informations
il y a 14 ans 8 mois #5181 par Laurent Dardenne
skeleton18 écrit:

Il me demande de rentrer les valeurs pour les paramètres -f (pour folder) et -t (pour time)...

Peux-tu nous communiquer l'entête du script, i.e. le contenu de la clause param.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 8 mois #5182 par PULVERAIL
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...

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 7 mois #5184 par Laurent Dardenne
skeleton18 écrit:

Après commence la partie traitement de mon script...

C'est un script ou un fichier contenant la déclaration d'une fonction ?
As-tu un appel interne à la fonction Launch ?

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 7 mois #5185 par PULVERAIL
je crois que ça va être plus simple si je joins le fichier de script!! :p

La pièce jointe launch.ps1 est absente ou indisponible

Pièces jointes :

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 7 mois #5188 par Laurent Dardenne
skeleton18 écrit:

je crois que ça va être plus simple si je joins le fichier de script!! :p

+1
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.

Plus d'informations
il y a 14 ans 7 mois #5194 par PULVERAIL
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!! B)

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.083 secondes
Propulsé par Kunena