Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
344 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  sauvegarde d'environnement .bat / powershell

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

sauvegarde d'environnement .bat / powershell

n°2263946
misato
Clavicula Nox
Posté le 05-08-2015 à 12:35:47  profilanswer
 

Bonjour,

 

j'espère que c la bonne sous-cat :o

 

je viens donc vers vous pour un problème assez spécifique :o

 

j'ai un ensemble de fichiers .bat qui font des opérations sur des bases de données. je controle pas vraiment cette partie-là, et moins je la touche, mieux c'est (en fait ces scripts sont pas sous notre responsabilité, ils peuvent évoluer)

 

je les ordonne par powershell (lancer le 1er, vérifier sa sortie et son log, lancer le 2e, vérifier ...), sauf que pour vérifier la sortie, ya un code d'erreur géré dans une variable d'environnement.

 

il faut donc que je sauvegarde l'environnement à la sortie du .bat pour l'importer dans powershell.

 

d'après ce que j'ai vu, ça se fait en appelant cmd.exe /c avec le fichier bat puis set et redirection vers un fichier :
cmd /c "$(chemin complet vers fichier bat) && set >$(chemin complet vers fichier txt contenant la liste des variables d'environnement sorties par set)"

 

quand j'utilise le &&, ça ne marche qu'une fois (un script bat au début qui fait les initialisations), pour les fichiers .bat de "travail", ça ne marche pas (le set n'est pas fait)
comme le && suppose que la première commande réussisse pour que la 2e soit lancée, j'ai esssayé avec "&" tout court, mais là aussi, ça ne marche pas :o
en fait, ça ne marche qu'en faisant ";", sauf que du coup, je récupère dans mon fichier d'import la sortie écran du script bat ... ya moyen d'éviter ça :S ?

 

voilà ce que j'ai actuellement :

Code :
  1. $base = [Environment]::CurrentDirectory=(Get-Location -PSProvider FileSystem).ProviderPath
  2. $import = "$base\impenv.txt"
  3. [. . .]
  4. function lancebat ($batfile) {
  5. cmd /v:ON /e:ON /c "$batfile && set >$import"
  6. $info = new-object system.IO.FileInfo "$import"
  7. if ($info.exists)
  8. { <import ...> }
  9. else
  10. { write-host "erreur" }
 

donc là, je suis quasiment chaque fois en erreur. (sauf au premier appel qui est différent, puisque le fichier bat est une suite de "set" pour les initialisations. les autres fichiers sont bcp plus complexes, ils font des appels sur des binaires des bases de données pour importer / exporter des données ou mettre en forme des fichiers pour d'autres traitements après. ils font une initialisation au début, un appel sur un "debuttravail.bat" et pareil à la fin sur un "fintravail.bat" pour regarder s'il y a eu des erreurs. ils font en plus appel après chaque étape de leurs executions à d'autres fichiers bat qui remplissent et vérifient des logs)

 

j'ai essayé avec "$batfile & set >$import", ça ne marche pas non plus. il me reste "$batfile ; set >$import", mais j'aimerais n'avoir dans $import que le résultat du "set" (qui donne la liste des variables d'environnement quand il est appelé sans rien)

 

si quelqu'un a une idée pour améliorer ou des questions si je suis pas clair ?!

 

merci !


Message édité par misato le 05-08-2015 à 12:41:19

---------------
shibboleet ! - HADOPI vous a plu ? Vous allez adorer la LOPPSI ! - generation NT bande de criminels inconscients !
mood
Publicité
Posté le 05-08-2015 à 12:35:47  profilanswer
 

n°2263948
misato
Clavicula Nox
Posté le 05-08-2015 à 12:54:40  profilanswer
 

bon, il semblerait qu'en fait j'ai pas mis assez de guillemets dans ma chaine d'appel, il faudrait un truc style cmd /c """$batfile"" & ""set >$import""" ... ça a l'air de mieux fonctionner :o


---------------
shibboleet ! - HADOPI vous a plu ? Vous allez adorer la LOPPSI ! - generation NT bande de criminels inconscients !
n°2264011
misato
Clavicula Nox
Posté le 06-08-2015 à 12:23:07  profilanswer
 

bon, fausse joie, du coup maintenant c'est $batfile qui se lance pas et le set qui me retourne un fichier vide :cry: !


---------------
shibboleet ! - HADOPI vous a plu ? Vous allez adorer la LOPPSI ! - generation NT bande de criminels inconscients !
n°2264020
misato
Clavicula Nox
Posté le 06-08-2015 à 14:20:11  profilanswer
 

j'ai l'impression d'avoir trouvé un compromis ...
j'ai un premier fichier batch qui est appelé avec plusieurs paramètres, puis tous les autres qui sont appelés sans rien.
 
le premier marche avec "$batfile & set >$import", les autres non.
j'ai fait un test avec $batfile.contains("le nom du premier batch.bat" ), si oui je lance comme ça, sinon je lance "$batfile & ""set >$import"""
 
mais je suis pas convaincu que ça marche sur les autres fichiers bat que le premier :S


---------------
shibboleet ! - HADOPI vous a plu ? Vous allez adorer la LOPPSI ! - generation NT bande de criminels inconscients !

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  sauvegarde d'environnement .bat / powershell

 

Sujets relatifs
[powershell] lister instances sql server distantPOWERSHELL ORACLE
[Powershell] Recherche fichier à partir d'un csvScript powershell et fichier CSV
[PowerShel] Création utilisateur Office 365 via script powershell[POWER SHELL] Problème d'import de module Active Directory
[RESOLU] [POWERSHELL] Modifier des lignes précises sur un fichierPowershell nettoyage serveur [Résolu]
Powershell - Desinstaller via GPO arrêt pc[powershell] se positionner sur un ligne precise dans fichier
Plus de sujets relatifs à : sauvegarde d'environnement .bat / powershell


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR