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 :

Conseil script exécution multiple qui peut fausser les données [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 19
    Points : 20
    Points
    20
    Par défaut Conseil script exécution multiple qui peut fausser les données
    Bonjour,

    J'ai effectué un script plutôt important et je vais passer les détails mais son but est de récupérer un numéro lors d'un appel et faire des requête par rapport à ce dernier, le problème c'est que je réinitialise mes variables en fin de script et j'ai peur que si le script s’exécute à nouveau alors que le premier n'est pas terminé cela crée pas mal de soucis au niveau de mes variables et donc des résultats ou même a cause des requête qui prennent du temps.
    J'ai déjà une solution qui risque d'être un peu chiante mais au cas ou j'aimerai savoir si il y a un moyen de détecter que le script est déjà en exécution et placer les numéro dans une "file d'attente" le temps que le script termine de s'exécuter ou si d'autre solution alternative existe.

    Merci !

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    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 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Chaque exécution de script Powershell est indépendante. Tu n'aura pas de conflit de variable entre tes différentes instance de Powershell.
    Oui, Tu peux savoir si un autre script est déjà en cours d'exécution (utilisation d'un mutex).

    Tu peux envisager de faire une file d'attente, dans ce cas tu devra créer une file d'attente
    Comment ? Le plus simple est un dossier input dans lequel tu stock tes demandes.
    Le script s'exécute :
    - Il stock la demande dans input
    - Si un autre script s'exécute il quitte
    - Si aucune demande n'est présente il quitte
    - Il traite la première demande de input
    - Après son traitement il supprime la demande
    - Il revient à "Si aucune demande n'est présente il quitte"


    Voici ci dessous un exemple sur l'utilisation d'un mutex
    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
    # Initialise la variable permettant de savoir si le mutex à été créé
    [bool] $CreatedMutex = $false
     
    # Tente de créer un mutex, si il n'existe pas
    $Mutex = New-Object System.Threading.Mutex($true, "MonScriptBlaBla", [ref] $CreatedMutex)
     
    # Si le mutex n'a pas été créé (un autre est déjà existant)
    if (!$CreatedMutex)
    {
        # On quitte
        exit
    }
     
    # Le mutex à été créé, nous n'avons qu'une instance de script en cours
    # action ...
     
     
    # On relache proprement le mutex
    $Mutex.ReleaseMutex()
    $Mutex.Close()

  3. #3
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    Eric il faut placer tout le code dans un try/catch/finally (où on libère le mutex), le risque étant de laisser le verrou actif alors que l'exécution précédente du script est partie en vrille.
    Une autre approche étant de vérifier via WMI l'existence d'une session PS ayant la même ligne d'arguments.

  4. #4
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    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 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Oui on peut vérifier les process aussi si tu pense cela plus safe.

    Un bout de code pour trouver le nombre de script en cours d'exécution.
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $pattern = "*""-file"" ""$($MyInvocation.MyCommand.Path)""*"
    $NbrScript = @(Get-WmiObject Win32_Process -Filter "name = 'powershell.exe'" | Where-Object {$_.CommandLine -like $pattern}).Count

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 19
    Points : 20
    Points
    20
    Par défaut
    Dac Merci !

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

Discussions similaires

  1. J'ai une macro a modifier et une autre à créer qui peut me les coter ?
    Par Bernardini dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/03/2015, 10h56
  2. Procédure qui peut lire les espaces
    Par Dartounet dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 07/01/2014, 11h16
  3. [AJAX] N'importe qui peut voir les données de mon fichier XML
    Par KoosMos dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 30/11/2007, 11h48
  4. Réponses: 8
    Dernier message: 30/11/2007, 11h48
  5. Ce qui peut intéresser les freenautes
    Par Poulain dans le forum Dépannage et Assistance
    Réponses: 7
    Dernier message: 01/12/2006, 16h40

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