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 :

Retour error code bloquant [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2016
    Messages : 5
    Par défaut Retour error code bloquant
    Bonjour a tous,
    Je suis en train de travailler sur un script de sauvegarde des postes utilisateurs, et il fonctionne parfaitement. Pour le peaufiner un peu, j'essaie d'ajouter une ligne de script me permettant d'afficher un message lorsqu'une action ne s'effectue pas et la ...problème.
    Voici mon code:

    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
     
    #######################
    #### Fonction Popup ###
    #######################
     
    Function Set-Popup
    {
    $WshShell = New-Object -ComObject wscript.shell
    $WshShell.Popup($args[0],0,'Avertissement')
    Exit
    }
     
    #######################
    ### Fonction Email  ###
    #######################
     
    ###         Function Set-Email                       
    ###         {                                        
    ###         $AdminMail = @{                          
    ###         from="tolleneer.f@mipih.fr"              
    ###         to="csim-infrastructure@mipih.fr"        
    ###         body="Sauvegarde en erreur"              
    ###         subject="$env:computername@mipih.fr"      
    ###         smtpserver="smtpint.mipih.net"           
    ###         }                                         
    ###         send-mailmessage @AdminMail              
    ###         Exit                                      
    ###         }                                       
     
     
    ###############################
    ### fonction calcul dossier ###
    ###############################
     
    function CalculTailleFichier {
       param ([string]$chemin)
       $i=0
       gci $chemin -recurse -force| foreach -process {$i+=$_.length}
       return $i
    }
     
    ######################################################################
    ### test de la connexion avec le serveur ou se situe la sauvegarde ###
    ######################################################################
     
    $testcnx= Test-Connection 10.194.5.84 -Count 1
    if (-Not($testcnx)) {Set-Popup "Serveur de sauvegarde inaccessible"}
     
     
    #################################################################################
    ### import du module AD et test si utilisateur et pc sont bien reliés dans AD ###
    #################################################################################
     
    Import-Module ActiveDirectory
    $description= Get-ADComputer $env:computername -properties * | select -Expandproperty Description
    $username= Get-ADUser $env:username -properties * | select -Expandproperty Name
    $ismycomputer= $description.IndexOf($username, [System.StringComparison]::OrdinalIgnoreCase) -ne -1
     
    if (-Not($ismycomputer)) {Set-Popup "Sauvegarde impossible pour cet utilisateur"}
     
    #######################################
    ### Message voulez vous sauvegarder ###
    #######################################
     
    $YES=6
    $shell=new-object -com wscript.shell
    $ret=$shell.popup("Voulez-vous sauvegarder?",0,"Sauvegarde",4+32)
    if ($ret -ne $YES) {exit}
     
    #########################################################
    ### creation du chemin de sauvegarde si non existant  ###
    #########################################################
     
    $localusername=$env:username
    $destination=E:\Sauvegarde\$localusername\
    if (-Not($destination)) {new-item -path E:\Sauvegarde\ -name $localusername -itemtype directory}
     
     
    #####################################################
    ### Calcul de la taille de sauvegarde a effectuer ###
    #####################################################
     
    $TailleMax=5368709120 
    $Taille1=CalculTailleFichier $env:HOMEPATH\Documents
    $Taille2=CalculTailleFichier $env:HOMEPATH\Favorites
    $Taille3=CalculTailleFichier $env:HOMEPATH\Desktop
     
    if ($Taille1+$Taille2+$Taille3 -gt $TailleMax) {Set-Popup "Sauvegarde impossible: Taille maximum de sauvegarde atteinte"}
     
    #####################################################
    ### sauvegarde de bureau favoris et mes documents ###
    #####################################################
     
    $source1="$env:HOMEPATH\Documents"
    $destination1="E:\Sauvegarde\$localusername\Documents"
    robocopy $source1 $destination1 /MIR /COPYALL
    if ($LASTEXITCODE -ne 0) {Set-popup "ERREUR: copie impossible pour repertoire mes documents"}
     
    $source2="$env:HOMEPATH\Favorites"
    $destination2="E:\Sauvegarde\$localusername\Favorites"
    robocopy $source2 $destination2 /MIR /COPYALL
    if ($LASTEXITCODE -ne 0) {Set-popup "ERREUR: copie impossible pour repertoire favoris"}
     
    $source3="$env:HOMEPATH\Desktop"
    $destination3="E:\Sauvegarde\$localusername\Desktop"
    robocopy $source3 $destination3 /MIR /COPYALL
    if ($LASTEXITCODE -ne 0) {Set-popup "ERREUR: copie impossible pour repertoire bureau"}

    Mon problème se situe sur cette partie (ligne 96) :

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($LASTEXITCODE -ne 0) {Set-popup "ERREUR: copie impossible pour repertoire mes documents"}

    Quand je n’exécute pas cette partie du code, mon script fonctionne nickel et la sauvegarde s'effectue normalement... et quand je l’exécute ... j'ai en permanence l'erreur copie impossible pour etc ...

    Si quelqu'un avait une idée ça serait vraiment super ... j'ai tenté pas mal de truc mais sans succès. merci a vous.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2015
    Messages : 66
    Par défaut
    Le problème est que tu ne vérifies que la valeur 0 pour $lastexitcode, alors que si une copie a été effectuée c'est 1 qui est retourné, voire tous ce qui est < à 8 :

    Voici les exit codes robocopy: http://ss64.com/nt/robocopy-exit.html

    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
    Hex   Decimal  Meaning if set
    
    0×00   0       No errors occurred, and no copying was done.
                       The source and destination directory trees are completely synchronized. 
    
    0×01   1       One or more files were copied successfully (that is, new files have arrived).
    
    0×02   2       Some Extra files or directories were detected. No files were copied
                       Examine the output log for details. 
    
    0×04   4       Some Mismatched files or directories were detected.
                       Examine the output log. Housekeeping might be required.
    
    0×08   8       Some files or directories could not be copied
                       (copy errors occurred and the retry limit was exceeded).
                       Check these errors further.
    
    0×10  16       Serious error. Robocopy did not copy any files.
                       Either a usage error or an error due to insufficient access privileges
                       on the source or destination directories.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2016
    Messages : 5
    Par défaut
    Ok je comprends d'ou vient le problème ... mais pour ce qui est de la syntaxe ... c'est coton. Le but est que lorsqu'il y a un probleme avec la copie de fichier ou repertoire (donc le exit code 8 je dirais par rapport a ta doc) le pop up d'erreur s'affiche. est-ce que la syntaxe suivante vous parait correcte par exemple ? (je l'ai testé et le script parait s’exécuter sans problème) :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($LASTEXITCODE = 8) {Set-popup "ERREUR: copie impossible pour repertoire mes documents"}

  4. #4
    Membre éprouvé
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2015
    Messages : 66
    Par défaut
    Essaye plutot:

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($LASTEXITCODE -gt 8) {Set-popup "ERREUR: copie impossible pour repertoire mes documents"}

    Donc si $lastexitcode est plus grand que 8, il y a un problème sérieux.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2016
    Messages : 5
    Par défaut
    Super ca fonctionne, merci beaucoup pour ton aide ... je vais pouvoir installer ma gpo maintenant grace a toi
    Avant de cloturer, juste pour mon information ... si je veux ajouter l'exit 16 par exemple, je l'écris comme ça ?:
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if ($LASTEXITCODE -gt 8) {Set-popup "ERREUR: copie impossible pour repertoire mes documents"}
    if ($LASTEXITCODE -gt 16) {Set-popup "ERREUR: copie impossible pour repertoire mes documents"}
    ou je peux simplifier comme ça ? :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($LASTEXITCODE -gt 8,16) {Set-popup "ERREUR: copie impossible pour repertoire mes documents"}

  6. #6
    Membre éprouvé
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2015
    Messages : 66
    Par défaut
    En fait
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    $LASTEXITCODE -gt 8
    (operateur GT, greater than, strictement supérieur à) prend en compte la valeur 16, car 16 est plus grand que 8.

    Si tu veux prendre en compte la valeur 8 et 16 tu peux utiliser l'opérateur GE (greater or equal), plus grand ou égale à.

    Autre alternative si tu veux vérifier seulement ces deux valeurs:

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    $LASTEXITCODE -eq 8 -or $LASTEXITCODE -eq 16

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2016
    Messages : 5
    Par défaut
    Merci infiniment pour tous ces éclaircissements ... les choses sont nettement plus claires maintenant grace a toi
    je clos la discussion en te remerciant encore 1000 fois pour le temps que tu as pu m'accorder.

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

Discussions similaires

  1. Error code too large
    Par afrikha dans le forum NetBeans
    Réponses: 6
    Dernier message: 14/02/2007, 13h33
  2. ORA-00600: internal error code
    Par Elise78 dans le forum Oracle
    Réponses: 6
    Dernier message: 30/01/2007, 14h32
  3. <: internal error code, arguments: !!!
    Par sb1960 dans le forum Oracle
    Réponses: 3
    Dernier message: 12/04/2006, 17h03
  4. [NASM] Critical error (code 5)
    Par fabnet dans le forum Assembleur
    Réponses: 11
    Dernier message: 25/03/2005, 19h51

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