Question Comportement fantaisiste de start-sleep

Plus d'informations
il y a 8 ans 2 mois #25063 par Philippe
désolé gabier de te polluer

Laurent dans l'exemple donner $message ne reçois rien, plus exactement il reçois null !
bien que la redirection fonctionne, l'égalité ne renvoie même pas le résultat de l'opération de redirection, même quand il y une erreur !

que le parseur PS l'autorise ne signifie pas toujours que ce soit bien écris (un peu comme mon orthographe on arrive a lire même quand c'est mal écrit) et prête parfois a confusion !

[code:1]PS C:\WINDOWS\system32\WindowsPowerShell\v1.0> $Message=\"Délai écoulé, $(get-date)\" > \"C:\test.txt\"
out-file : L'accès au chemin d'accès 'C:\test.txt' est refusé.
Au caractère Ligne:1 : 1
+ $Message=\"Délai écoulé, $(get-date)\" > \"C:\test.txt\"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OpenError: (:«») [Out-File], UnauthorizedAccessException
+ FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.OutFileCommand


PS C:\WINDOWS\system32\WindowsPowerShell\v1.0> $Message

PS C:\WINDOWS\system32\WindowsPowerShell\v1.0> $Message.GetType()
Impossible d’appeler une méthode dans une expression Null.
Au caractère Ligne:1 : 1
+ $Message.GetType()
+ ~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : (:«») [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : InvokeMethodOnNull[/code:1]

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

Plus d'informations
il y a 8 ans 2 mois #25064 par xyz
6ratgus écrit:

Laurent dans l'exemple donner $message ne reçois rien, plus exactement il reçois null !
bien que la redirection fonctionne, l'égalité ne renvoie même pas le résultat de l'opération de redirection, même quand il y une erreur !

Oui tu as raison, c'est au moins une erreur ici et peut être un bug.

J'étais resté sur ce comportement :
[code:1]
$Message=$null
if ($Message=\"Délai écoulé, $(get-date)\"«») {'ok'} else {'nok'}

$Message[/code:1]
Mais je n'avais pas vérifié le résultat :unsure:
C'est donc à corriger dans le script.

Tutoriels PowerShell

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

Plus d'informations
il y a 8 ans 2 mois #25065 par Gabriel
Laurent Dardenne écrit:

Salut,
regarde ceci .
A tester.

Merci Laurent
J'ai fait un code avec ce timer .NET (ce n'est pas un langage qu'on apprend ici, c'est une collection de langages !!! :unsure: )
[code:1]\"Début de boucle. Départ $(get-date)\" >>$monlog
$NSlice=18
$Delay=300000
For($i=0;$i -lt $NSlice;$i++){
[system.threading.thread]::«»Sleep($Delay)
\"Boucle en cours tranche N°$i /$(get-date)\" >>$monlog
}
\"Délai écoulé : $(get-date)\" >>$monlog[/code:1]

Il y a encore des anomalies
[code:1]Boucle en cours tranche N°0 /02/27/2018 10:58:52
Boucle en cours tranche N°1 /02/27/2018 11:03:52
Boucle en cours tranche N°2 /02/27/2018 11:08:52
Boucle en cours tranche N°3 /02/27/2018 11:13:52
Boucle en cours tranche N°4 /02/27/2018 11:18:52
Boucle en cours tranche N°5 /02/27/2018 11:23:52
Boucle en cours tranche N°6 /02/27/2018 11:28:52
Boucle en cours tranche N°7 /02/27/2018 11:33:52
Boucle en cours tranche N°8 /02/27/2018 11:38:52
Boucle en cours tranche N°9 /02/27/2018 11:43:52
Boucle en cours tranche N°10 /02/27/2018 12:06:14
Boucle en cours tranche N°11 /02/27/2018 12:11:14
Boucle en cours tranche N°12 /02/27/2018 12:16:14
Boucle en cours tranche N°13 /02/27/2018 12:21:14
Boucle en cours tranche N°14 /02/27/2018 12:26:14
Boucle en cours tranche N°15 /02/27/2018 12:31:14
Boucle en cours tranche N°16 /02/27/2018 12:36:15
Boucle en cours tranche N°17 /02/27/2018 12:41:15
Délai écoulé : 02/27/2018 12:41:15[/code:1]
On voit qu'entre les tranches 9 et 10 il y a un trou de 18 minutes au leu du délai normal de 5 mn.

Comme avec ce timer je ne peux pas cumuler le temps j'ai fait un nombre défini de \"tranches de temps\". Evidemment, il faudrait que je mette une borne en temps. Ca fera \"ceinture et bretelles\" mais en attendant j'ai des chances de ne pas trop dépasser mon temps imparti !

gratgus écrit:

...le \"$message =\" est inutile et peu peut être provoquer des choses bizarre
dans tous les cas il faut choisir soit :
[code:1]
\"Délai écoulé, $(get-date)\" >> $monlog
[/code:1]
soit
[code:1]
$Message = \"Délai écoulé, $(get-date)\"
$Message >> $monlog
[/code:1]
mais les deux en une ligne ne sert a rien !!


D'accord Gratgus, j'ai simplifié dans ton sens, car je n'ai pas bien compris la discussion avec Laurent

:) gabier

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

Plus d'informations
il y a 8 ans 2 mois #25066 par xyz
gabier écrit:

D'accord Gratgus, j'ai simplifié dans ton sens, car je n'ai pas bien compris la discussion avec Laurent

En gros, Powershell permet lors d'une affection de valeur dans une variable d'émettre dans le pipeline le résultat de cette affectation à condition de placer l'instruction entre parenthèses :
[code:1]
#Affecte uniquement une valeur, pas d'émission de cette valeur dans le pipeline
$MaVariable=10

#Affecte une valeur et émet cette valeur dans le pipeline
($MaVariable=10)

#Un seule instruction équivalente à ces 2 instructions
$MaVariable=10
Write-output 10
[/code:1]

Tutoriels PowerShell

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

Plus d'informations
il y a 8 ans 2 mois #25067 par xyz
Pour le timer, j'ai recherché un peu et il semble que le hard soit qq fois en cause, mais rien de bien concret.

Sur le même PC, il faudrait également vérifier si ce code fonctionne de la même manière dans une console d'une session utilisateur (autre contexte).

Tutoriels PowerShell

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

Plus d'informations
il y a 8 ans 2 mois #25068 par Gabriel
Laurent Dardenne écrit:

gabier écrit:

D'accord Gratgus, j'ai simplifié dans ton sens, car je n'ai pas bien compris la discussion avec Laurent

En gros, Powershell permet lors d'une affection de valeur dans une variable d'émettre dans le pipeline le résultat de cette affectation à condition de placer l'instruction entre parenthèses :


OK, Compris

:) gabier

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

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