IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Refresh auto au lieu du bouton [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Invité
    Invité(e)
    Par défaut Refresh auto au lieu du bouton
    Bonjour j'ai un monitoring d'un serveur MDT tout est parfait mais j'aimerais faire un auto update des infos contrairement à ce que j'ai actullement du refresh via un bouton...

    Mon bouton est...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $Refresh_btn.Add_Click({	
    	$Properties_Row_List.Clear()			
    	Populate_DataGrid_Monitoring
    	$wshell = New-Object -ComObject Wscript.Shell
    	$wshell.Popup("Rafraichissement des données effectué.",0,"Attention",0x0)
    })
    Donc au lieu de devoir utiliser le bouton pour faire le refresh j'aimerais que ce soit automatique à chaque minute...Je ne m'y connais pas en powershell mais si vous pouviez me donner une idée vers ou orienter mes rechercher pour solutionner ma question

    Merci

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Utilisation d'un Timer simple.

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $timer = new-object timers.timer
    $timer.Interval = 1000 # milliseconds
     
    $action = {
         # Votre action ici
         Write-Host "Salut $((Get-Date).ToString())"
    }
     
    Register-ObjectEvent -InputObject $timer -EventName elapsed –SourceIdentifier TimerConfirm -Action $action
    $timer.start()
     
    # Stopper le Timer
    # $timer.stop()
    # Unregister-Event TimerConfirm

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci bien pour cette piste...j'avais essayé avec une boucle Do / while

    Je me rend compte que lors de cette boucle le focus est prit et une autre action ne peut se faire pendant la boucle...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    	Do {
    
            $Properties_Row_List.Clear()			
    	Populate_DataGrid_Monitoring
    	$wshell = New-Object -ComObject Wscript.Shell
    	$wshell.Popup("Rafraichissement des données effectué.",0,"Attention",0x0)
    
    sleep 10
    
    }
    #escape
    while ( -not ( $Host.UI.RawUI.KeyAvailable -and ($Host.UI.RawUI.ReadKey("IncludeKeyUp,NoEcho").VirtualKeyCode -eq 27 ) ) )

    Du coup est ce que cette réalisation est possible ou est logique? J'ai testé et en action ça fonctionne plus ou moins. Le pop up apparait quand je clique sur le bouton stop!!!

    Est ce possible avec le timer de partir le "refresh" et lorsque l'on clique sur le bouton l'exécution du timer de "refresh" se termine laissant place à pouvoir faire une autre opération?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    $Refresh_btn.Add_Click({	
    
    $timer = new-object timers.timer
    $timer.Interval = 1000 # milliseconds
     
    $action = {
         # Votre action ici
    	 $Properties_Row_List.Clear()			
    	 Populate_DataGrid_Monitoring
             $wshell = New-Object -ComObject Wscript.Shell
    	 $wshell.Popup("timer up.",0,"Attention",0x0)
    }
     
    Register-ObjectEvent -InputObject $timer -EventName elapsed –SourceIdentifier TimerConfirm -Action $action
    $timer.start()
    					
    })		
    
    $stop_btn.Add_Click({
           #Stopper le Timer
                $timer.stop()
                Unregister-Event TimerConfirm
    })

  4. #4
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Effectivement je constate le même fonctionnement.
    Je te propose un autre Timer, voici un exemple. J'ai volontairement créé des fonctions "inutiles", peut être que cela sera plus clair dans ton programme final.

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    $timer = New-Object System.Windows.Forms.Timer
    $timer.Interval = 100 # milliseconds
    $timer.add_tick({UpdateUi})
     
    Function UpdateUi()
    {
        $ShowLabel.Text = (Get-Date).ToString("yyyy/MM/dd HH:mm:ss FFF")
    }
     
    Function StartTimer()
    {
        $timer.start()
    }
     
    Function StopTimer()
    {
        $timer.Stop()
    }
     
     
    # Form
    [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
    [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
     
    $objForm = New-Object System.Windows.Forms.Form
    $objForm.Text = "Test timer"
    $objForm.Size = New-Object System.Drawing.Size(300, 130)
    $objForm.StartPosition = "CenterScreen"
     
    $OKButton = New-Object System.Windows.Forms.Button
    $OKButton.Location = New-Object System.Drawing.Size(12, 12)
    $OKButton.Size = New-Object System.Drawing.Size(75, 23)
    $OKButton.Text = "Débuter"
    $OKButton.Add_Click({StartTimer})
    $objForm.Controls.Add($OKButton)
     
    $CancelButton = New-Object System.Windows.Forms.Button
    $CancelButton.Location = New-Object System.Drawing.Size(12, 41)
    $CancelButton.Size = New-Object System.Drawing.Size(75, 23)
    $CancelButton.Text = "Arréter"
    $CancelButton.Add_Click({StopTimer})
    $objForm.Controls.Add($CancelButton)
     
    $ShowLabel = New-Object System.Windows.Forms.Label
    $ShowLabel.Location = New-Object System.Drawing.Size(114, 17)
    $ShowLabel.Size = New-Object System.Drawing.Size(150, 23)
    $ShowLabel.Text = "Vide"
    $objForm.Controls.Add($ShowLabel)
     
    [void] $objForm.ShowDialog()

  5. #5
    Invité
    Invité(e)
    Par défaut
    Super j'ai mis quelques temps à incorporer à ma structure mais mes tests confirme que ça fonctionne très bien dans cette logique que tu m'as présentée.

    De fait au final j'ai

    Code Powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    $timer = New-Object System.Windows.Forms.Timer
    $timer.Interval = 60000 # milliseconds 1min
    $timer.add_tick({UpdateUi})
     
    Function UpdateUi()
    {
            $wshell = New-Object -ComObject Wscript.Shell
    	$wshell.Popup("Rafraichissement des données effectué.",0,"Attention",0x0)
    }
     
    Function StartTimer()
    {
        $timer.start()
    }
     
    Function StopTimer()
    {
        $timer.Stop()
    	$wshell = New-Object -ComObject Wscript.Shell
    	$wshell.Popup("Arrêt du rafraichissement.",0,"Attention",0x0)
     
    }

    et en lieu les boutons qui start ou stop le timer...

    Code Powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $stop_btn.Add_Click({StopTimer})

    Merci ça fonctionne nickel et je dois dire que t'es infos étaient très claires, j'ai appris de ces exemples un grand merci @ericlm128
    Dernière modification par Invité ; 01/09/2017 à 15h25.

  6. #6
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Merci ça fait plaisir.

    Pour info tu peux typer la balise de code pour la colorisation syntaxique.

    Sur la balise de début : CODE=powershell

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2013] Numéro auto après clic sur bouton
    Par tequichien dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/07/2017, 11h32
  2. Fonction setInterval() refresh auto
    Par xD3VHAX dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/05/2014, 14h42
  3. [HTML] Envoi dun formulaire avec un lien au lieu d'un bouton
    Par Mysticlolly dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 19/05/2010, 12h30
  4. Réponses: 7
    Dernier message: 29/05/2008, 11h24
  5. Pb de refresh auto d'une vue materialisée
    Par Omsey dans le forum Administration
    Réponses: 7
    Dernier message: 21/11/2006, 16h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo