Important Script qui ne s’arrête pas !

Plus d'informations
il y a 15 ans 2 mois #8445 par Van_De
Bonjour,

Je reviens poster ici car j'ai un problème avec mon script !!

Je mets le script et m'explique sur tout ce qui est bizarre ^^ : [code:1]
$serveur = Get-Content -Path \\bxad02\VMBackup\serveurhote.txt
foreach ($serveur in $serveur)
{
dir \\ramseshv01\d$\VM | where {$_.PSIsContainer} | foreach {
md \\bxad02\VMBackup\Test\$($_.name)
md \\bxad02\VMBackup\Test\$($_.name)\Temp
if (Test-Path \\ramseshv01\Y$)
{
Send-MailMessage -to \"xxxx@xxxx.fr\" -from \"zzzz@xxxx.fr\" -SmtpServer \"smtp.xxx.com\" -Subject \"Clichés VM\" -body \"Le lecteur Y est toujours existant ! Lancer vssbackupstop !\"
}
else
{
Start-Process -FilePath \\ramseshv01\c$\Scripts\vssbackup.cmd -NoNewWindow -Wait
$text = \"La copie s'est bien passée\"
New-Item \\ramseshv01\d$\VM\StateSave.txt -ItemType \"file\"
Out-File -FilePath \\ramseshv01\d$\VM\StateSave.txt -InputObject $text
Copy-Item \\ramseshv01\d$\VM\$($_.name)\* -Destination \\bxad02\VMBackup\Test\$($_.name)\Temp -ErrorVariable +StateSave
Out-File -FilePath \\ramseshv01\d$\VM\$($_.name)\StateSave.txt -InputObject $StateSave -Append
Start-Process -FilePath \\ramseshv01\c$\Scripts\vssbackupstop.cmd -NoNewWindow -Wait
if (Test-Path \\bxad02\VMBackup\Test\$($_.name)\Ancienbackup)
{
Remove-Item -Path \\bxad02\VMBackup\Test\$($_.name)\Ancienbackup -recurse
Move-Item -Path \\bxad02\VMBackup\Test\$($_.name)\Dernierbackup \\bxad02\VMBackup\Test\$($_.name)\Ancienbackup
Move-Item -Path \\bxad02\VMBackup\Test\$($_.name)\Temp \\bxad02\VMBackup\Test\$($_.name)\Dernierbackup
}
else
{
md \\bxad02\VMBackup\Test\$($_.name)\Ancienbackup
Copy-Item \\bxad02\VMBackup\Test\$($_.name)\Temp\* -Destination \\bxad02\VMBackup\Test\$($_.name)\Ancienbackup
Move-Item -Path \\bxad02\VMBackup\Test\$($_.name)\Temp \\bxad02\VMBackup\Test\$($_.name)\Dernierbackup
}}
Send-MailMessage -to \"xxxx@xxxx.fr\" -from \"zzzz@xxxx.fr\" -SmtpServer \"smtp.xxx.com\" -Subject \"Sauvegarde VM\" -body \"Voici ci-joint le fichier texte resumant la sauvegarde des VM\" -Attachments \"\\ramseshv01\d$\VM\$($_.name)\StateSave.txt\"
Remove-Item -Path \\ramseshv01\d$\VM\$($_.name)\StateSave.txt -force
}
}
[/code:1]

Donc voila plusieurs choses peuvent sembler bizarre (c'est mon 2ème script powershell seulement ! :s) je vais essayer d'expliquer tout ce qui peut paraitre bizarre :

- le $serveur du début : Alors à la base je voulais lancer ce script d'un seul serveur qui l’exécuterait sur tout les serveur étant dans le $serveur ! Mais j'ai eu quelques problèmes avec l’exécution du cmd ! Donc j'ai tester de le lancer depuis le serveur Ramseshv01 et la sa as marcher ! Je vais donc faire un script par serveur physique !!

- La façon de créer et éditer mon fichier StateSave.txt ! Alors j'ai eu aussi du mal à le faire alors j'ai fais quelque chose d'un peu moche oui :s !

Bon maintenant que j'ai expliquer ce qui me semble à moi bizarre, je vais expliquer mes problèmes :

- Mon premier problème et que lorsque le script crée les dossiers des VM qu'il récupère dans Ramseshv01>>D>>VM il en récupère 1 seul exécute la suite du script et récupère le 2eme et reéxecute le script !! Ce qui pose quelques problèmes par rapport à la création de mon fichier StateSave.txt, et ce qui relance les cmd qui font les backup des VM !

- Ensuite une fois qu'il as reeffectué mon script pour la 2ème fois (Je n'ai que 2 VM sur ce serveur) Il recommence à nouveau le script, il passe la création de dossiers vu qu'il n'y en as pas d'autres j'imagine et il relance les cmd encore une fois qui me relance les backup et tout ce qui suit !!! Je ne comprends pas pourquoi !

Et à chaque fois il m'envoie bien le mail avec le fichier texte ! Mais ce fichier est vide ...

Donc voila sa fait beaucoup à lire et beaucoup de problèmes ! :s

Merci d'avance à ceux qui prendront la peine de lire tout sa :)

Si je n'ai pas été assez claire n'hésitez pas demandai moi :)

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 2 mois #8447 par Jacques Barathon
J'avoue que je n'ai pas tout lu, mais déjà ce qui me semble bizarre c'est ça :

[code:1]
$serveur = Get-Content -Path \\bxad02\VMBackup\serveurhote.txt
foreach ($serveur in $serveur)
{
...
[/code:1]

Il faut que tu utilises des noms de variable distincts dans les parenthèses. La deuxième variable (à droite du 'in') doit être une variable qui existe et qui - à priori - désigne un tableau qui contient un ou plusieurs éléments, et la première variable (à gauche du 'in') doit être une variable qui n'existe pas encore - ou qui sera écrasée si elle existe. En effet, elle sera alimentée au fur et à mesure par chaque élément du tableau.

Tu aurais donc plutôt intérêt à renommer tes variables ainsi :

[code:1]
$serveurs = Get-Content -Path \\bxad02\VMBackup\serveurhote.txt
foreach ($serveur in $serveurs)
{
...
[/code:1]<br><br>Message édité par: janel, à: 28/12/10 15:00

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 2 mois #8448 par Van_De
Réponse de Van_De sur le sujet Re:Script qui ne s’arrête pas !
D'accord merci je commence par sa :)

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 2 mois #8455 par Van_De
Réponse de Van_De sur le sujet Re:Script qui ne s’arrête pas !
J'ai réussi ! J'en suis venu à bout !! Bon il me fait toujours les machines une par une mais il m'écrit bien dans le fichier texte et s’arrête bien dés qu'il as fais toutes les machines :D

Un aperçu de mon code pour ceux que sa intéresserait :
[code:1] dir \\serveur\d$\VM | where {$_.PSIsContainer} | foreach {
md \\bxad02\VMBackup\Test\$($_.name)
md \\bxad02\VMBackup\Test\$($_.name)\Temp
if (Test-Path \\serveur\Y$)
{
Send-MailMessage -to \&quot;xxx@xxx.fr\&quot; -from \"zzz@xxx.fr\&quot; -SmtpServer \"smtp.xxx.com\" -Subject \"Clichés VM\" -body \"Le lecteur Y est toujours existant ! Lancer vssbackupstop !\"
}
else
{
Start-Process -FilePath \\serveur\c$\Scripts\vssbackup.cmd -NoNewWindow -Wait
$text = \&quot;La copie s'est bien passée\&quot;
New-Item \\serveur\d$\VM\StateSave.txt -ItemType \&quot;file\&quot;
Out-File -FilePath \\serveur\d$\VM\StateSave.txt -InputObject $text
Copy-Item \\serveur\d$\VM\$($_.name)\* -Destination \\bxad02\VMBackup\Test\$($_.name)\Temp -ErrorVariable +StateSave
Out-File -FilePath \\serveur\d$\VM\StateSave.txt -InputObject $StateSave -Append
Start-Process -FilePath \\serveur\c$\Scripts\vssbackupstop.cmd -NoNewWindow -Wait
if (Test-Path \\bxad02\VMBackup\Test\$($_.name)\Ancienbackup)
{
Remove-Item -Path \\bxad02\VMBackup\Test\$($_.name)\Ancienbackup -recurse
Move-Item -Path \\bxad02\VMBackup\Test\$($_.name)\Dernierbackup \\bxad02\VMBackup\Test\$($_.name)\Ancienbackup
Move-Item -Path \\bxad02\VMBackup\Test\$($_.name)\Temp \\bxad02\VMBackup\Test\$($_.name)\Dernierbackup
}
else
{
md \\bxad02\VMBackup\Test\$($_.name)\Ancienbackup
Copy-Item \\bxad02\VMBackup\Test\$($_.name)\Temp\* -Destination \\bxad02\VMBackup\Test\$($_.name)\Ancienbackup
Move-Item -Path \\bxad02\VMBackup\Test\$($_.name)\Temp \\bxad02\VMBackup\Test\$($_.name)\Dernierbackup
}}
Send-MailMessage -to \&quot;xxx@xxx.fr\&quot; -from \"zzz@xxx.fr\&quot; -SmtpServer \"smtp.xxx.com\" -Subject \"Sauvegarde VM\" -body \"Voici ci-joint le fichier texte resumant la sauvegarde des VM\" -Attachments \"\\serveur\d$\VM\StateSave.txt\"
Remove-Item -Path \\serveur\d$\VM\StateSave.txt -force
}

[/code:1]

\&quot;serveur\&quot; est as remplacer par le nom de chaque serveur hôtes hébergeant les VM Voila :D<br><br>Message édité par: Van_De, à: 29/12/10 10:37

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 2 mois #8460 par Jacques Barathon
Bravo ! Ca fait plaisir de voir tant d'efforts finalement couronnés de succès. :)

C'est quand même dommage que tu doives passer chaque nom de serveur \&quot;en dur\&quot; dans ton script. Mais après tout, ça te laisse une marge de progrès pour le début 2011 ! :P

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 2 mois #8463 par Van_De
Réponse de Van_De sur le sujet Re:Script qui ne s’arrête pas !
Oui c'est sur :s Mais vu que je mets le script sur chaque machine hôte en fait je peux supprimer le \\serveur et mettre directement D: ou C: :)

Et oui sa fais plaisir :) :)

Maintenant je me lance dans l'amélioration du script mais ce qui est beaucoup moins urgent et important ! Tant que celui la fonctionne, sa me laisse du temps pour me casser la tête sur des améliorations que je n'arriverais pas à faire fonctionner au début surement ^^

En tout cas encore merci, ce forum m'auras grandement aidé !

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.101 secondes
Propulsé par Kunena