Question
Script batch à convertir en powershell
- Dam
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 5
- Remerciements reçus 0
J'ai un script de sauvegarde système et de dossiers qui utilise différent paramètres selon les sauvegardes qui sont nécessaires et qui est développé en Batch, je dois le convertir en PowerShell pour avoir plus de possibilité et si possible l’améliorer.
J’aimerais que vous me donniez des pistes pour voir comment je pourrai faire cela, utiliser des fonctions ? des Objets ? pour faire quelque chose de propre et d’efficace, ce qui me permettrai de voir les bonnes pratiques de Scripting sous PowerShell.
Voici le script d’origine en Batch (Pour l’explication du fonctionnement de base un autre fichier cmd appel ce script en lui passant : ALL ou SYS ou BDD ou FIC comme paramètre au démarrage, ce qui permet de spécifier le type de sauvegarde attendu)
[code:1]@ECHO OFF
REM 1. RECHERCHE DU TYPE DE SAUVEGARDE
IF \"%1\"==\"ALL\" GOTO CONFIG_ALL
IF \"%1\"==\"SYS\" GOTO CONFIG_SYS
IF \"%1\"==\"BDD\" GOTO CONFIG_BDD
IF \"%1\"==\"FIC\" GOTO CONFIG_FIC
GOTO ERREUR
REM 2. CONFIGURATION DE LA SAUVEGARDE
:CONFIG_SYS
SET SAVESYS=1
SET SAVEBDD=0
SET SAVEFIC=0
GOTO SAVE_START
:CONFIG_BDD
SET SAVESYS=0
SET SAVEBDD=1
SET SAVEFIC=0
GOTO SAVE_START
:CONFIG_FIC
SET SAVESYS=0
SET SAVEBDD=0
SET SAVEFIC=1
GOTO SAVE_START
:CONFIG_ALL
SET SAVESYS=1
SET SAVEBDD=1
SET SAVEFIC=1
GOTO SAVE_START
REM 3. DEMARRAGE DE LA SAUVEGARDE
:«»SAVE_START
ECHO
ECHO SAUVEGARDE JOURNALIERE
ECHO
ECHO Date Debut : %DATE%
ECHO Heure Debut : %TIME%
ECHO Nom du PC : %COMPUTERNAME%
ECHO Identification Disque Destination :
VOL D:
ECHO.
REM 4. DEMARRAGE DE LA SAUVEGARDE SYSTEME
:«»SAVE_SYS
IF %SAVESYS%==0 GOTO :«»SAVE_BDD
ECHO *** SAUVEGARDE SYSTEME ***
ECHO.
ECHO Debut de la sauvegarde : %TIME%
wbadmin start backup -include:C:\testsav -backuptarget:«»D: -allcritical -quiet > C:\Scripts\Rapports\SAVESYS.LOG
ECHO.
ECHO Fin de la sauvegarde : %TIME%
REM 5. DEMARRAGE DE LA SAUVEGARDE DE BASE DE DONNEES AVEC ARRET PREALABLE D'UN SERVICE
:«»SAVE_BDD
IF %SAVEBDD%==0 GOTO :«»SAVE_FIC
ECHO.
ECHO *** SAUVEGARDE AVEC ARRET D'UN SERVICE ***
ECHO.
REM 6. DEMARRAGE DE LA SAUVEGARDE DE DOSSIERS
:«»SAVE_FIC
IF %SAVEFIC%==0 GOTO :«»SAVE_FIN
ROBOCOPY C:\testsav d:\test\C\testsav /MIR /NFL /NDL /NP /R:0 /W:0 /MT:8 /LOG:C:\Scripts\Rapports\testsav.log
REM 7. FIN DE LA SAUVEGARDE
:«»SAVE_FIN
ECHO *** FIN DE LA SAUVEGARDE ***
ECHO Date Fin : %DATE%
ECHO Heure Fin : %TIME%
ECHO.
GOTO :FIN
REM 8. GESTION DES ERREURS
:ERREUR
ECHO.
ECHO ERREUR : Mode d'appel [%1] incorrect
ECHO.
ECHO Modes d'appels valides :
ECHO ALL : sauvegarde Complete
ECHO SYS : sauvegarde système uniquement
ECHO BDD : sauvegarde des bases de donné (dossier avec arrêt de service) uniquement
ECHO FIC : sauvegarde des dossiers uniquement
ECHO.
REM 9. FIN DU SCRIPT
:FIN
[/code:1]
Message édité par: mood8moody, à: 6/08/16 13:31<br><br>Message édité par: mood8moody, à: 6/08/16 13:35
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
mood8moody écrit:
Utiliser des fonctions et des objets oui, voir des fonctions qui renvoient des objetsJ’aimerais que vous me donniez des pistes pour voir comment je pourrai faire cela, utiliser des fonctions ? des Objets ?
mood8moody écrit:
Ici ça dépend du temps que tu as pour cette migration 3 heures, 3 jours ou 3 semaines.pour faire quelque chose de propre et d’efficace, ce qui me permettrai de voir les bonnes pratiques de Scripting sous PowerShell.
Tu peux adapter ton batch au langage Powershell ou le réécrire, dans ce cas des specs et un cahier des charges c'est un bon début (qq lignes suffisent).
Ainsi l'usage de Pester s'en trouvera facilité au cas où.
Est-ce seulement ce script qui est à migrer ou l'ensemble de la solution ?<br><br>Message édité par: Laurent Dardenne, à: 6/08/16 16:39
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Dam
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 5
- Remerciements reçus 0
La finalité est de revoir la solution complète et de l’améliorer.
En gros un logiciel développé en interne sous Windev produit un script de sauvegarde personnalisable suivant nos besoins.
Ci-dessus j'ai donc copié une version d'un script que ce logiciel m'a produit pour faire des tests.
L'ossature du script est entrée en dur dans windev et seulement certains appels se font pour modifier certaines variable.
L'ossature ressemble beaucoup au script que j'ai mis plus haut avec quelques paramétrage qui ne sont pas intégrés, des variables surtout au niveau des lecteurs de destination etc... Par exemple la ligne : wbadmin start backup -include:C:\testsav -backuptarget:D: -allcritical -quiet > C:\Scripts\Rapports\SAVESYS.LOG est reintegré par le logiciel selon le paramétrage.
Il faudra que j'arrive a interfacer windev avec le script powershell comme actuellement. Donc si certaines variables sont imbriquées au fin fond d'objet .net, j'aurais des problèmes.
Le but pour l'instant est de produire une ossature en powershell, qui me permet de faire déjà la même chose pour voir ce que cela donne.
Je pensais simplement réécrire le script en version powershell, mais j'aimerais profiter de cette solution pour faire quelque chose de clean.
Message édité par: mood8moody, à: 6/08/16 18:40<br><br>Message édité par: mood8moody, à: 6/08/16 21:47
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
C'est le premier point à aborder, tu peux déjà réaliser ,si possible, un script de base pour vérifier l'appel du script et le passage de paramètre.Il faudra que j'arrive a interfacer windev avec le script powershell
Quant tu parles de \"L'ossature du script\" tu référence un mécanisme de template ?
En suite j'ai une question, le script réalisé est figé et doit répondre à plusieurs cas c'est bien ça ?
Et comment sont gérer les erreurs de Robocopy et les possible exceptions PS/dotnet ?
Enfin quelles sont les limitations que tu souhaites dépasser ?
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Dam
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 5
- Remerciements reçus 0
On m'a demandé pour le moment de convertir le script en powershell et de ne pas m'occuper de l'interface avec windev mais il semble bien stocké en tant que template avant compilation par windev.
Le script une fois edité ne repond à mon avis qu'à un cas precis. Si on veut autre chose, on reparametre le logiciel et on réédite un script.
Je pense que l'objectif est plus de voir les possibilités de Powershell que de recuperer et garder la solution précédente de sauvegarde.
Donc tout est envisageable. On peut mettre de coté Windev.
L'objectif est de mieux gerer les logs de sortie et de regler certains plantage qui font que les backup ne se lancent pas et restent bloqués.
On veut evaluer powershell en gros, aucune idée pour le moment sur la gestion des erreurs de copie, c'est un point à travailler.
Je commence à le coder basiquement ensuite, j'améliorerai le tout. J'appronfondirais la semaine prochaine.
On voudrait utiliser powershell pour d'autres projets egalement donc je risque d'en manger. J'essai de commencer directement par les bonnes pratiques.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
On m'a demandé pour le moment de convertir le script en powershell et de ne pas m'occuper de l'interface avec windev
mood8moody écrit:
A priori oui.Le script une fois éditè ne répond à mon avis qu'à un cas precis.
mood8moody écrit:
Powershell offre bien plus de possibilités que les batch, de la à dire que PS est la solution à vos problèmes, là je n'en sais rien.L'objectif est de mieux gérer les logs de sortie et de régler certains plantage qui font que les backup ne se lancent pas et restent bloqués.
mood8moody écrit:
Reste à définir les points à évaluerOn veut evaluer powershell en gros
Et quels sont les OS ciblés ?
mood8moody écrit:
Définissez ce que sont pour vous, de manière générales, \"les bonnes pratiques\" d'un langage/shell.J'essai de commencer directement par les bonnes pratiques.
Il y l' écriture du code et son contrôle .
Powershell existant depuis 10 ans il y a désormais de nombreux outils structurant son usage, mais de déjà comprendre les principes de base de powershell est un bon début
On peut très bien te proposer une adaptation du code, mais si tu dois t'occuper de sa maintenance ce n'est pas te rendre service il me semble.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Script batch à convertir en powershell