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 :

Session qui ne se referme pas [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 624
    Par défaut Session qui ne se referme pas
    Bonjour,

    J'ai un script que j'execute et qui m'ouvre une session sur un ordinateur distant. Malgré la fermeture de ma session après chaque lancement, il semblerait que celle-ci reste ouverte.

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    
    Function Get_Information
    {
       [System.Reflection.Assembly]::LoadWithPartialName(“System.Windows.Forms”)
       [Windows.Forms.MessageBox]::Show(“$Information”, “Delivery Package Perspective”,`
       [Windows.Forms.MessageBoxButtons]::OK, [Windows.Forms.MessageBoxIcon]::Information)
    }
    
    #get-process | out-file -filepath C:\2_Echanges\AA_Powershell\erreur23102015.txt      
    
    #Test Connexion à la machine distante
    #################################################################
    Function Get-password_En_ligne { 
        $ServeurDistant1="PLUTON"
        $login="adlacroix\ADMPLUTON"
        $credential = Get-Credential "adlacroix\ADMPLUTON"
        $error.Clear()
    
        $session = New-PSSession -computername $ServeurDistant1 -credential $credential
    
        $CodeRetourSession=$?
        
        if ( "$CodeRetourSession" -eq "False" ) { $Information="Attention ! $Error[0]" ; Get_Information }
        
        if ( "$CodeRetourSession" -eq "True" ) {
            $error.Clear()
            $command = {get-service -Name WinRM}
            $res = Invoke-Command -session $session -scriptblock $command
            
            $CodeRetourCommand=$?
            if ( "$CodeRetourCommand" -eq "True" ) {
                
                    foreach($item in $res){    
                        Write-Host("Nom complet: " + $item.DisplayName) 
                        Write-Host("Name: " + $item.Name) 
                        Write-Host("Etat: " + $item.Status) 
                        Write-Host "Ok"
                        
                        Remove-PSSession -name $session
                    }
            }
            else {
                $Information="Test connection ! $Error[0]"
                Get_Information 
             }   
        }
    }
    J'ai le message d'erreur suivant et plus je n'ai que 3 session d'ouverte, pourtant je fais en sorte de toujours la fermer dans mon script

    New-PSSession : [PLUTON] La connexion au serveur distant PLUTON a échoué avec le message d’erreur suivant: Le service Gestion des services
    Web ne peut pas traiter la demande. Cet utilisateur est autorisé à utiliser un nombre maximal de 5 shells simultanés, valeur qui a été
    dépassée. Fermez les shells existants ou augmentez le quota pour cet utilisateur. Pour plus d'informations, voir la rubrique d'aide
    about_Remote_Troubleshooting.
    Au caractère C:\2\23102015_test.ps1:19 : 16
    + $session = New-PSSession -computername $ServeurDistant1 -credential $credent ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : OpenError: (System.Manageme....RemoteRunspace:RemoteRunspace) [New-PSSession], PSRemotingTransportException
    + FullyQualifiedErrorId : -2144108123,PSSessionOpenFailed

    je suis alors obligé de réaliser un remove-pssession -name Session2

    Merci pour votre aide

  2. #2
    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
    Billets dans le blog
    1
    Par défaut
    Salut,
    utilise un bloc Try/Catch/Finally, ton code contient bine un appel à Remove-PSSession, mais j'ai un doute sur son appel effectif en cas d'erreur.

  3. #3
    Membre émérite Avatar de suchiwa
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2010
    Messages
    435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2010
    Messages : 435
    Par défaut
    Citation Envoyé par vince2005 Voir le message
    Bonjour,

    J'ai un script que j'execute et qui m'ouvre une session sur un ordinateur distant. Malgré la fermeture de ma session après chaque lancement, il semblerait que celle-ci reste ouverte.

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    
    Function Get_Information
    {
       [System.Reflection.Assembly]::LoadWithPartialName(“System.Windows.Forms”)
       [Windows.Forms.MessageBox]::Show(“$Information”, “Delivery Package Perspective”,`
       [Windows.Forms.MessageBoxButtons]::OK, [Windows.Forms.MessageBoxIcon]::Information)
    }
    
    #get-process | out-file -filepath C:\2_Echanges\AA_Powershell\erreur23102015.txt      
    
    #Test Connexion à la machine distante
    #################################################################
    Function Get-password_En_ligne { 
        $ServeurDistant1="PLUTON"
        $login="adlacroix\ADMPLUTON"
        $credential = Get-Credential "adlacroix\ADMPLUTON"
        $error.Clear()
    
        $session = New-PSSession -computername $ServeurDistant1 -credential $credential
    
        $CodeRetourSession=$?
        
        if ( "$CodeRetourSession" -eq "False" ) { $Information="Attention ! $Error[0]" ; Get_Information }
        
        if ( "$CodeRetourSession" -eq "True" ) {
            $error.Clear()
            $command = {get-service -Name WinRM}
            $res = Invoke-Command -session $session -scriptblock $command
            
            $CodeRetourCommand=$?
            if ( "$CodeRetourCommand" -eq "True" ) {
                
                    foreach($item in $res){    
                        Write-Host("Nom complet: " + $item.DisplayName) 
                        Write-Host("Name: " + $item.Name) 
                        Write-Host("Etat: " + $item.Status) 
                        Write-Host "Ok"
                        
                        Remove-PSSession -name $session
                    }
            }
            else {
                $Information="Test connection ! $Error[0]"
                Get_Information 
             }   
        }
    }
    J'ai le message d'erreur suivant et plus je n'ai que 3 session d'ouverte, pourtant je fais en sorte de toujours la fermer dans mon script

    New-PSSession : [PLUTON] La connexion au serveur distant PLUTON a échoué avec le message d’erreur suivant: Le service Gestion des services
    Web ne peut pas traiter la demande. Cet utilisateur est autorisé à utiliser un nombre maximal de 5 shells simultanés, valeur qui a été
    dépassée. Fermez les shells existants ou augmentez le quota pour cet utilisateur. Pour plus d'informations, voir la rubrique d'aide
    about_Remote_Troubleshooting.
    Au caractère C:\2\23102015_test.ps1:19 : 16
    + $session = New-PSSession -computername $ServeurDistant1 -credential $credent ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : OpenError: (System.Manageme....RemoteRunspace:RemoteRunspace) [New-PSSession], PSRemotingTransportException
    + FullyQualifiedErrorId : -2144108123,PSSessionOpenFailed

    je suis alors obligé de réaliser un remove-pssession -name Session2

    Merci pour votre aide
    Bonjour Vincent,

    Le sujet est surement clos, mais une raison plus que possible est la suivante :

    Dans le paramétrage par défaut de winrm, il y a que 5 sessions possible par user, identifié par le paramètre MaxShellsPerUser.
    Pour le voir, dans une session powershell sur l'ordinatreur distant (configuration locale) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    winrm get winrm/config/winrs
    Winrs
        AllowRemoteShellAccess = true
        IdleTimeout = 180000
        MaxConcurrentUsers = 5
        MaxShellRunTime = 2147483647
        MaxProcessesPerShell = 15
        MaxMemoryPerShellMB = 150
        MaxShellsPerUser = 5
    Pour changer la valeur de MaxShellsPerUser, utiliser la commande suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    PS C:\> set-item WSMan:\localhost\Shell\MaxShellsPerUser 25
    PS C:\> winrm get winrm/config/winrs
    Winrs
        AllowRemoteShellAccess = true
        IdleTimeout = 180000
        MaxConcurrentUsers = 5
        MaxShellRunTime = 2147483647
        MaxProcessesPerShell = 15
        MaxMemoryPerShellMB = 150
        MaxShellsPerUser = 25
    La valeur de 25 est arbitraire. On peut aussi se demander si MaxConcurrentUsers n'est pas un peu faible suivant les besoins tout comme MaxMemoryPerShellMB, déjà dépassé lors d'un déploiement d'Apache Tomcat avec Puppet.

    Cordialement,
    Vincent

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

Discussions similaires

  1. [PHP 5.2] Session qui ne se renouvelle pas
    Par max-mag dans le forum Langage
    Réponses: 0
    Dernier message: 18/03/2009, 11h08
  2. Réponses: 2
    Dernier message: 27/05/2008, 09h30
  3. Variable de session qui ne se met pas a jour
    Par tekman54000 dans le forum Langage
    Réponses: 2
    Dernier message: 12/04/2008, 17h19
  4. Réponses: 6
    Dernier message: 04/09/2006, 15h48

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