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

  FORUM HardWare.fr
  Systèmes & Réseaux Pro
  Stockage

  Script powershell pour de la sauvegarde

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Script powershell pour de la sauvegarde

n°73892
mrimcesi
Posté le 23-11-2010 à 09:28:41  profilanswer
 

Bonjour à tous,
 
Je viens poster sur ce forum car aprés avoir passer des heures et des heures sur internet à cherche une réponse je n'ai rien trouver  :(  ! Je vous demande donc votre aide  :)  
 
Dans mon entreprise il y à un script de sauvegarde en cmd qui sert à la sauvegarde des machines virtuelles sur un serveur de fichiers, mais je n'ai aucun moyen de savoir si la sauvegarde s'est bien passée  :(. Mon chef n'ayant pas le temps de le faire m'as confier la tache, soit de créer un script afin de recevoir par mail les informations sur la copie, soit de refaire carrément tout le script avec l'envoi de mails aussi et tout sa par : Powershell !!!
 
Je n'ai jamais fait de Powershell de ma vie, et aprés avoir passer une journée à lire des tutos et tout je ne m'en sors plus ...  
 
Si quelqu'un pourrait m'éclaircir cela serait génial  :D  
 
Merci d'avance !

mood
Publicité
Posté le 23-11-2010 à 09:28:41  profilanswer
 

n°73899
CK Ze CaRi​BoO
Posté le 23-11-2010 à 10:48:18  profilanswer
 

Un script pour backuper des VM, okay.
Mais pourquoi powershell vu que c'est pas du windows ? [:wam]


---------------
The only thing necessary for the triumph of evil is for good people to do nothing.
n°73900
mrimcesi
Posté le 23-11-2010 à 11:04:15  profilanswer
 

CK Ze CaRiBoO a écrit :

Un script pour backuper des VM, okay.
Mais pourquoi powershell vu que c'est pas du windows ? [:wam]


 
Toutes mes machines sont sous 2008 Serveur et quelques unes en 2003 !

n°73902
ChaTTon2
Je l'aime !
Posté le 23-11-2010 à 11:07:18  profilanswer
 

CK Ze CaRiBoO a écrit :

Un script pour backuper des VM, okay.
Mais pourquoi powershell vu que c'est pas du windows ? [:wam]


Pourquoi celà ne serait pas du windows ? Même si je trouve celà moins bien .... Tu as des serveur de virtualisation microsoft based ... :)
 
mrimcesi : La seule façon de s'assurer qu'un backup en script ce soit vraiment bien passé, c'est de remonter les backup de temps à autres sur un serveur dis de "laboratoire" ... Un serveur en dehors de ton LAN pour pas le perturber.
 
Maintenant pour savoir si el backup s'est bien exécuté (ce qui est différent de la vérification des données) il suffit d'inclure dans ton script une variable contenant l'heure de fin de backup et de te l'envoyer par mail en utilisant ton serveur de messagerie.
 
Il éxiste des petites applications pour envoyer les mails de façon plus ... facile. Comme par exemple MAILsend.

Message cité 1 fois
Message édité par ChaTTon2 le 23-11-2010 à 11:07:54

---------------
Mon feed-back : http://forum.hardware.fr/hfr/Achat [...] 1974_1.htm
n°73905
CK Ze CaRi​BoO
Posté le 23-11-2010 à 11:34:20  profilanswer
 

Ah oué j'avais oublié qu'il y avait hyperv xD


---------------
The only thing necessary for the triumph of evil is for good people to do nothing.
n°73907
mrimcesi
Posté le 23-11-2010 à 11:37:23  profilanswer
 

ChaTTon2 a écrit :


Pourquoi celà ne serait pas du windows ? Même si je trouve celà moins bien .... Tu as des serveur de virtualisation microsoft based ... :)
 
mrimcesi : La seule façon de s'assurer qu'un backup en script ce soit vraiment bien passé, c'est de remonter les backup de temps à autres sur un serveur dis de "laboratoire" ... Un serveur en dehors de ton LAN pour pas le perturber.
 
Maintenant pour savoir si el backup s'est bien exécuté (ce qui est différent de la vérification des données) il suffit d'inclure dans ton script une variable contenant l'heure de fin de backup et de te l'envoyer par mail en utilisant ton serveur de messagerie.
 
Il éxiste des petites applications pour envoyer les mails de façon plus ... facile. Comme par exemple MAILsend.


 
Merci de la réponse,  
 
Mais je dois passer par du Powershell ! On me l'as imposer ... quitte à refaire les anciens scripts avec Powershell ! C'est la qu'est mon problème :s

n°73921
ChaTTon2
Je l'aime !
Posté le 23-11-2010 à 14:17:13  profilanswer
 

Et bien tu n'as plus qu'à te palucher les tutos :)
 
Rassures toi il y a énormément de similitudes avec le DOS :)


---------------
Mon feed-back : http://forum.hardware.fr/hfr/Achat [...] 1974_1.htm
n°73924
mrimcesi
Posté le 23-11-2010 à 15:29:43  profilanswer
 

ChaTTon2 a écrit :

Et bien tu n'as plus qu'à te palucher les tutos :)
 
Rassures toi il y a énormément de similitudes avec le DOS :)


 
C'est sa le problème je ne trouve pas vraiment un tuto pour ce que je recherche  :(  !

n°73926
Bocal83
Posté le 23-11-2010 à 15:37:11  profilanswer
 

Salut,
Voici le script PS que j'ai modifié (la source ne vient pas de moi) pour backuper les VM dans un Hyper-V qu'on a. Il sauvegarde uniquement les machines qui sont référencées dans un répertoire bien précis (que tu peux bien sur changer) qui va avoir la date du jour (pratique si tu veux mettre plusieurs sauvegardes dans un même répertoire) :

 

##
## Create a backup of all the vm's
##

 

$dest = "Répertoire de sauvegarde"
$VM_Service = get-wmiobject -namespace root\virtualization Msvm_VirtualSystemManagementService
$ListofVMs = get-wmiobject -namespace root\virtualization Msvm_ComputerSystem -filter "ElementName = 'NOM EXACT DE LA VM'"
$date = get-date -uformat "%d-%m-%Y"
$ddest = $dest += $date += "-"  

 

foreach ($VM in [array] $ListOfVMs)
{
 $VMReturnState = $VM.EnabledState
 $VMName = $VM.ElementName

 

if (($VM.EnabledState -eq 2) -or ($VM.EnabledState -eq 32768) -or ($VM.EnabledState -eq 32770))
 {
  $VM.RequestStateChange(32769)
  echo "Saving the state of $VMName"
 }

 

while (!($VM.EnabledState -eq 32769) -and !($VM.EnabledState -eq 3))
 {
  Start-Sleep(1)
  $VM = get-wmiobject -namespace root\virtualization -Query "Select * From Msvm_ComputerSystem Where ElementName='$VMName'"
 }

 


 if ([IO.Directory]::Exists("$ddest\TmpDir\$VMName" ))
 {
  [IO.Directory]::Delete("$ddest\TmpDir\$VMName", $True)
 }

 

echo "Exporting the VM"
 $status = $VM_Service.ExportVirtualSystem($VM.__PATH, $True, "$ddest\TmpDir" )
 
 if ($status.ReturnValue -eq 4096)
 {
  $job = [Wmi]$status.Job
 
  while (!($job.PercentComplete -eq 100) -and ($job.ErrorCode -eq 0))
  {
   Start-Sleep(5)
   $job = [Wmi]$status.Job
   echo $job.PercentComplete
  }
 }

 


 ## Store the files on in a temp directory before moving them to their location and then remove the old files.

 

if ([IO.Directory]::Exists("$ddest\$VMName" ))
 {
  [IO.Directory]::Move("$ddest\$VMName", "$ddest\$VMName-OldTmpDir" )
  [IO.Directory]::Move("$ddest\TmpDir\$VMName", "$ddest\$VMName" )
  [IO.Directory]::Delete("$ddest\$VMName-OldTmpDir", $True)
 }
 else
 {
  [IO.Directory]::Move("$ddest\TmpDir\$VMName", "$ddest\$VMName" )
 }
 
 echo "Done with $VMName"
 $VM.RequestStateChange($VMReturnState)
}

 


PS : ouais par contre, j'ai pas d'envoi de mail pour dire que le backup s'est bien passé :o

Message cité 1 fois
Message édité par Bocal83 le 23-11-2010 à 15:40:20
n°73956
mrimcesi
Posté le 24-11-2010 à 09:41:57  profilanswer
 

Bocal83 a écrit :

Salut,
Voici le script PS que j'ai modifié (la source ne vient pas de moi) pour backuper les VM dans un Hyper-V qu'on a. Il sauvegarde uniquement les machines qui sont référencées dans un répertoire bien précis (que tu peux bien sur changer) qui va avoir la date du jour (pratique si tu veux mettre plusieurs sauvegardes dans un même répertoire) :
 
##
## Create a backup of all the vm's
##
 
$dest = "Répertoire de sauvegarde"
$VM_Service = get-wmiobject -namespace root\virtualization Msvm_VirtualSystemManagementService
$ListofVMs = get-wmiobject -namespace root\virtualization Msvm_ComputerSystem -filter "ElementName = 'NOM EXACT DE LA VM'"
$date = get-date -uformat "%d-%m-%Y"
$ddest = $dest += $date += "-"    
 
foreach ($VM in [array] $ListOfVMs)  
{
 $VMReturnState = $VM.EnabledState
 $VMName = $VM.ElementName
 
 if (($VM.EnabledState -eq 2) -or ($VM.EnabledState -eq 32768) -or ($VM.EnabledState -eq 32770))
 {
  $VM.RequestStateChange(32769)
  echo "Saving the state of $VMName"
 }
 
 while (!($VM.EnabledState -eq 32769) -and !($VM.EnabledState -eq 3))
 {
  Start-Sleep(1)
  $VM = get-wmiobject -namespace root\virtualization -Query "Select * From Msvm_ComputerSystem Where ElementName='$VMName'"
 }  
 
 
 if ([IO.Directory]::Exists("$ddest\TmpDir\$VMName" ))
 {
  [IO.Directory]::Delete("$ddest\TmpDir\$VMName", $True)
 }
 
 echo "Exporting the VM"
 $status = $VM_Service.ExportVirtualSystem($VM.__PATH, $True, "$ddest\TmpDir" )
   
 if ($status.ReturnValue -eq 4096)
 {
  $job = [Wmi]$status.Job  
 
  while (!($job.PercentComplete -eq 100) -and ($job.ErrorCode -eq 0))
  {
   Start-Sleep(5)
   $job = [Wmi]$status.Job  
   echo $job.PercentComplete
  }  
 }
 
 
 ## Store the files on in a temp directory before moving them to their location and then remove the old files.
 
 if ([IO.Directory]::Exists("$ddest\$VMName" ))
 {
  [IO.Directory]::Move("$ddest\$VMName", "$ddest\$VMName-OldTmpDir" )
  [IO.Directory]::Move("$ddest\TmpDir\$VMName", "$ddest\$VMName" )
  [IO.Directory]::Delete("$ddest\$VMName-OldTmpDir", $True)
 }
 else
 {
  [IO.Directory]::Move("$ddest\TmpDir\$VMName", "$ddest\$VMName" )
 }
 
 echo "Done with $VMName"
 $VM.RequestStateChange($VMReturnState)
}
 
 
PS : ouais par contre, j'ai pas d'envoi de mail pour dire que le backup s'est bien passé :o


 
Merci bcp pour ce script  :) :) Maintenant faut que je trouve un script pour l'envoi de mail   :sweat:  :sweat: !! Si quelqu'un à une idée ??

mood
Publicité
Posté le 24-11-2010 à 09:41:57  profilanswer
 

n°73957
nebulios
Posté le 24-11-2010 à 10:34:20  profilanswer
 

A la fin de la sauvegarde tu as une trace dans les journaux d'évènements ? Auquel cas tu peux attacher une tâche planifiée à cet évènement.

n°73959
ChaTTon2
Je l'aime !
Posté le 24-11-2010 à 10:55:25  profilanswer
 

Regarde netsend.exe sur google :) apres t'as une bête commande de ce type :
MAILSEND +cc +bc -smtp MAILSERVERADRESS -d DOMAINE -from ADRESSE_EXPEDITEUR -to ADRESSE_DESTINATAIRE -sub "SUJET DE TON MAIL" -a PIECE_JOINTE
 
T'as juste un fichier .EXE a telecharger et à mettre dans ton dossier system32


---------------
Mon feed-back : http://forum.hardware.fr/hfr/Achat [...] 1974_1.htm
n°73960
Je@nb
Modérateur
Kindly give dime
Posté le 24-11-2010 à 11:51:53  profilanswer
 

Ouais enfin en powershell tu as send-mailmessage qui fait ça directement ...

n°73968
ChaTTon2
Je l'aime !
Posté le 24-11-2010 à 14:21:48  profilanswer
 

tiens je connaissais pas ... Merki je regarde ça desuite :)
 
EDIT : Je confirme que send-mailmessage est juste énorme : http://technet.microsoft.com/fr-fr [...] 47693.aspx


Message édité par ChaTTon2 le 24-11-2010 à 14:24:53

---------------
Mon feed-back : http://forum.hardware.fr/hfr/Achat [...] 1974_1.htm
n°74021
Bocal83
Posté le 25-11-2010 à 13:34:48  profilanswer
 

Salut,
On a un script PS qui envoi un mail (mais pas pour une sauvegarde d'une VM, c'est après le dump d'une base Oracle qui renvoi la dernière ligne du fichier log du backup) :
 
$a = (get-content fichier.log)[-1] (pour prendre la dernière ligne)
$file = "fichier.log"
 
$emailFrom = "PowerShell@domain.com"
$emailTo = "destinataire@domain.com"
$subject = "Sujet"
$body = "$a" << ajoute le .log en pièce jointe
 
$attachment = new-object System.Net.Mail.Attachment $file
$message.Attachments.Add($attachment)
 
$smtpServer = "Serveur de messagerie"
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($emailFrom, $emailTo, $subject, $body, $attachment)
 
Après, si tu veux une entrée dans l'observateur d'évènement, tu peux toujours rajouter dans le .bat qui va lancer le script PS cette ligne :
 
eventcreate /ID 1 /L Application /T Information /SO Titre /D "Description"

n°74076
mrimcesi
Posté le 26-11-2010 à 09:48:14  profilanswer
 

Merci pour toutes ces réponses  :D  :D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Systèmes & Réseaux Pro
  Stockage

  Script powershell pour de la sauvegarde

 

Sujets relatifs
Script Installation Adobe Flash PlayerSauvegarde VMware ESX
Sauvegarde d'ESX sur site distantpowershell Exchange 2007 : recupérer la liste de ses BAL triée par UO
Sauvegarde Windows 7 sur disque dur Fat32 reseau bboxSauvegarde et restauration BDD GLPI et OCS en commande DOS
mise en place de la sauvegarde des serveurs virtuels dans le reseauAvis sur stratégie sauvegarde perso
Aide pour sauvegarde Grand-père/Père/Fils 
Plus de sujets relatifs à : Script powershell pour de la sauvegarde


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR