Important
Script qui ne s’arrête pas !
- Van_De
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 59
- Remerciements reçus 0
il y a 15 ans 2 mois #8445
par Van_De
Script qui ne s’arrête pas ! a été créé 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 !
) 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
!
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 !
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
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 !
- 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
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 !
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.
- Jacques Barathon
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 15 ans 2 mois #8447
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:Script qui ne s’arrête pas !
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
[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.
- Van_De
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 59
- Remerciements reçus 0
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.
- Van_De
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 59
- Remerciements reçus 0
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 
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 \"xxx@xxx.fr\" -from \"zzz@xxx.fr\" -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 = \"La copie s'est bien passée\"
New-Item \\serveur\d$\VM\StateSave.txt -ItemType \"file\"
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 \"xxx@xxx.fr\" -from \"zzz@xxx.fr\" -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]
\"serveur\" est as remplacer par le nom de chaque serveur hôtes hébergeant les VM Voila
<br><br>Message édité par: Van_De, à: 29/12/10 10:37
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 \"xxx@xxx.fr\" -from \"zzz@xxx.fr\" -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 = \"La copie s'est bien passée\"
New-Item \\serveur\d$\VM\StateSave.txt -ItemType \"file\"
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 \"xxx@xxx.fr\" -from \"zzz@xxx.fr\" -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]
\"serveur\" est as remplacer par le nom de chaque serveur hôtes hébergeant les VM Voila
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 15 ans 2 mois #8460
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:Script qui ne s’arrête pas !
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 \"en dur\" dans ton script. Mais après tout, ça te laisse une marge de progrès pour le début 2011 !
C'est quand même dommage que tu doives passer chaque nom de serveur \"en dur\" dans ton script. Mais après tout, ça te laisse une marge de progrès pour le début 2011 !
Connexion ou Créer un compte pour participer à la conversation.
- Van_De
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 59
- Remerciements reçus 0
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
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é !
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.064 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Script qui ne s’arrête pas !