Question
import liste pc, boucle, zip et copie simultanees
- Arnaud
- Auteur du sujet
- Hors Ligne
- Nouveau membre
- Messages : 7
- Remerciements reçus 0
Un collègue à moi à créé un script asser complexe (pour moi) en batch pour effectuer une sauvegarde d'environ 250PC, sauvegarde que je vais vous décrire ci dessous. Le script (.bat) est asser ancien, et… mon collègue n'est plus la pour le maintenir.
Je voudrais en faire une nouvelle version, en PowerShell. (j'apprends le Scripting PowerShell depuis 4-5mois maintenant).
Avant de partir dans le code, je voulais vous consulter pour avoir peut être vos conseils.
Je vous explique les étapes que je voudrais effectuer.
1/ Importer une liste au format CSV de 250 ordinateurs concernés ( Première ligne de mon fichier CSV ce sont mes entetes de colonnes, avec le Nom_Site, Nom_Pc,Lien_Repertoire_A_Sauvegarder, etc etc)
2/ Exécuter une boucle sur l'ensemble des PC de la liste
3/ La boucle commence par voir si le Pc est sur le réseau
4 / Si le Pc est connecté, je zip le dossier du pc distant, dont le lien est \"Lien_repertoire_A_Sauvegarde\"
5/ Une fois que le dossier est zipé (taille du zip entre 50 et 80 MO environ), je le copie sur mon serveur de sauvegarde (lui aussi distant). Le zip déposé écrase la dernière version présente. je veux pas charger ce serveur.
Je fais ça pour les 250 pc.
Mon objectif c'est de trouver le moyen le plus efficace pour faire ce ZIP puis copier le dossier vers un lieu d'archivage, aujourd'hui je ne sais pas comment déclencher plusieurs copies simultanée ( je serai capable de faire un script pas à pas, qui serait pas forcément optimisé, et assez long...)
Quand le script sera fait, je programerai par exemple l'éxécution de se script 1 fois par semaine le jeudi à 2h dans la nuit.
Si vous avez des conseils à me donner, je suis preneurs
Merci
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
- Messages : 6302
- Remerciements reçus 68
quelles versions de Powershell as-tu sur ton parc ?
Exécutes-tu ton script sur un serveur ? si oui quelle version ?
Pour l'exécution à distance WinRm est-il possible sur ton poste/serveur vers les postes ciblés ?
Est-ce une sauvegarde en journée ?
Pour créer une archive .
Je te conseille de créer des fonctions simples, de générer des logs et d'implémenter une gestion d'erreur.
Si tu fais cela progressivement tu devrais t'en sortir.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud
- Auteur du sujet
- Hors Ligne
- Nouveau membre
- Messages : 7
- Remerciements reçus 0
ci dessous quelques éléments:
q:quelles versions de Powershell as-tu sur ton parc ?
r: j'utilise WindowsPowershell version 5.1
q:Exécutes-tu ton script sur un serveur ? si oui quelle
r: non , pour l'instant depuis un PC Administrateur du domaine, mais pas le serveur (ça peut se faire si possible)
q:version ?
r: toutes nos version sont en Windows PowerShell 5.1
q: Pour l'exécution à distance WinRm est-il possible sur ton poste/serveur vers les postes ciblés ?
r: oui, c'est possible
q:Est-ce une sauvegarde en journée ?
r: j'aurai préféré une sauvegarde dans la nuit. Après, pour faire mes premiers test je peux la faire en journée pour l'instant, il n'y a aucun risque. Le fichier que je veux Ziper ne sera pas utilisé par l'utilisateur
\"Je te conseille de créer des fonctions simples, de générer des logs et d'implémenter une gestion d'erreur\"
C'est mieux de passer avec des fonction, que d'écrire les lignes de commandes les unes après les autres dans une boucle ?
Mon problème principal, où je n'ai pas encore trouvé réponse, c'est comment lancer 5 copies de dossiers simultanées par exemple, tu aurais une idée ?
Deuxième question importante, pour transférer rapidement des dossier entre Server/PC ou Server/server est ce qu'il y a un canal spécifique ? ou les commandes copy-item et autre sont ce qu'il y a de mieux
Merci pour tes réponses Laurent
Connexion ou Créer un compte pour participer à la conversation.
- Sinjk
- Hors Ligne
- Membre premium
- Messages : 99
- Remerciements reçus 0
Pour les copies simultanée je te conseil d'utiliser les méthodes asynchrones comme, par exemple, les jobs ou les runspaces. Tu pourras ainsi lancer plusieurs copies d'un coup.
Concernant la copie en elle même, je dirais que tu n'as pas d'autres choix que Copy-Item ou Robocopy,
j'avoue ne pas savoir lequel est meilleur en terme de perf..
Bon courage
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
- Messages : 6302
- Remerciements reçus 68
C'était le pq de ma questionLe fichier que je veux Ziper ne sera pas utilisé par l'utilisateur
Deka écrit:
Oui si tu dois faire des jobs distants pour traiter en paralléle tes machines.C'est mieux de passer avec des fonction, que d'écrire les lignes de commandes les unes après les autres dans une boucle ?
On peut tjr avancer que le principal c'est que le traitment soit fait, peu importe comment.
Si tu dois modifier une partie tu ne remets pas en cause l'ensemble. Le mieux étant un module contenant des fonctions.
Deka écrit:
Si tu parles de 5 copies sur 1 machines pas vraiment, si c'est 5 copies sur 5 machine oui.Mon problème principal, où je n'ai pas encore trouvé réponse, c'est comment lancer 5 copies de dossiers simultanées par exemple, tu aurais une idée ?
Ensuite faut regarder la difficulté d'implémentation, ce type de code nécessite un bon niveau de connaissance en PS.
Si tu disposes de WinRm tu peux traiter + machines en // et chacune se chargera du traitement. ça c'est la théorie.
En pratique il faut, au cas où, configurer le parc, implémenter une gestion d'erreur poussée (côté client ET launcher (poste admin) ), centraliser les logs et prévoir une reprise en cas d'erreur.
Le pb principale étant de savoir ce qui ne fonctionne pas, car on ne se préoccupe pas de ce qui fonctionne
Une première version dans un boucle avec 3-4 machines est déjà un bon début,
Ensuite tu passes via WinRM avec 2-3 machines.
Cela nécessite tout de même une étude et du temps si tu ne connais pas ces sujets.
Deka écrit:
Non c'est juste une question de robustesse et de facilité, de déléguer cette tâche à Robocopy (avec reprise) est préférable.Deuxième question importante, pour transférer rapidement des dossier entre Server/PC ou Server/server est ce qu'il y a un canal spécifique ?
Pour les perf tu peux le paramètrer à l'aide de /IPG:Number
Pour ce point, à mon avis, la suite c'est une question de réseau et de charge sur la cible.
C'est un projet intéressant en tout cas.
Tu peux regarder ceci
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud
- Auteur du sujet
- Hors Ligne
- Nouveau membre
- Messages : 7
- Remerciements reçus 0
Laurent Dardenne écrit:
Si tu parles de 5 copies sur 1 machines pas vraiment, si c'est 5 copies sur 5 machine oui.
Dans mon cas, c'est lancer sur 5 machines différentes, en même temps l'archivage en .ZIP d'un dossier, puis copier le .ZIP de chaque machine vers 1 serveur. Donc c'est plutôt 5 copies sur 5 machines.
Laurent Dardenne écrit:
Je vais chercher comment fonctionne Robocopy, ça m'interesse!Non c'est juste une question de robustesse et de facilité, de déléguer cette tâche à Robocopy (avec reprise) est préférable.
Laurent Dardenne écrit:
Merci pour cet encouragement et aussi pour les sources !C'est un projet intéressant en tout cas.
Tu peux regarder ceci
Laurent Dardenne écrit:
Une première version dans un boucle avec 3-4 machines est déjà un bon début
Ok, je pense m'orienter de la sorte :
1/ Apprendre à bien utiliser le module Microsoft.PowerShell.Archive . Ce module me permettra de créer mes .ZIP
2/ Apprendre à utiliser Robocopy, pour les transferts de .ZIP vers mon serveur.
3/ Puis, Je vais me documenter sur les JOBS, pour apprendre à en faire. L'idée c'est d'arriver a faire les \"sauvegardes\" une à une dans un premier temps (etape 1 et 2), puis arriver par la suite à créer un JOB pour mener des sauvegardes en parallèle.
Merci les gars!
Si d'autres personnes ont des conseils, je reste à l'écoute (et ça servira à tous ceux comme moi )
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- import liste pc, boucle, zip et copie simultanees