Ir ao conteúdo

Criar script Windows Server 2016 das máquinas virtuais Hyper-V


Ir à solução Resolvido por Edvaldo J. Frederico,

Posts recomendados

  • Membro VIP
Postado

Tarde

 

No meu serviço possuímos por volta de 10 máquinas virtuais preciso automatizar a criação dos backup dessas VM.

Atualmente faço tudo manual, encontrei o procedimento abaixo que encontrei no Google, se eu fizer por dentro do Power Shell funciona filé, só que quando crio um scrip .bat o mesmo não faz nada.

Citação

Para automatizar a exportação de máquinas virtuais (VMs) no Hyper-V, você pode utilizar scripts do PowerShell. O cmdlet Export-VM permite exportar uma VM, incluindo sua configuração e discos virtuais. Você pode combinar esse comando com outros para desligar a VM (se estiver ligada), definir o local de destino da exportação e, opcionalmente, adicionar um log ou notificação por e-mail. 

Passos para automatizar a exportação:

1. Verifique se o Hyper-V e o PowerShell estão habilitados:

No Windows Server, o Hyper-V pode ser habilitado via Painel de Controle, PowerShell ou DISM (Deployment Image Servicing and Management). 

O PowerShell é uma ferramenta essencial para a automação. 

2. Crie um script do PowerShell:

Utilize o cmdlet Export-VM para exportar a VM. Por exemplo: Export-VM -Name "NomeDaVM" -Path "C:\Caminho\Para\Exportacao".

Para desligar a VM antes da exportação, use o cmdlet Stop-VM.

Adicione opções de log, como Start-Transcript e Stop-Transcript para registrar as ações e resultados.

Utilize Send-MailMessage para enviar um e-mail com o log após a conclusão. 

3. Agende a execução do script:

Use o Agendador de Tarefas do Windows para executar o script em intervalos regulares ou em momentos específicos. 

 

# Inicia o log Start-Transcript 
  -Path "C:\Logs\ExportVM_$(Get-Date -Format yyyyMMdd_HHmmss).txt" 
# Desliga a VM (se estiver ligada) 
  Stop-VM -Name "NomeDaVM" -Force # Exporta a VM Export-VM -Name "NomeDaVM" -Path "C:\Caminho\Para\Exportacao" 
# Envia um e-mail com o log (opcional) 
  Send-MailMessage -From "[email protected]" -To "[email protected]" -Subject "Exportação da VM concluída" -SmtpServer "servidor_smtp" -Body (Get-Content "C:\Logs\ExportVM_$(Get-Date -Format yyyyMMdd_HHmmss).txt") 
# Finaliza o log Stop-Transcript

 

 

Observações:

Substitua "NomeDaVM", "C:\Caminho\Para\Exportacao", "[email protected]", "[email protected]" e "servidor_smtp" pelos valores corretos para seu ambiente. 

O script deve ser executado como administrador. 

O local de destino da exportação deve ter espaço suficiente para armazenar a VM. 

O cmdlet Stop-VM com o parâmetro -Force desliga a VM imediatamente, sem solicitar confirmação. Use com cautela. 

Considere adicionar tratamento de erros e validações ao script para maior robustez. 

Este é um exemplo básico. Você pode adicionar funcionalidades como verificação de espaço em disco, tratamento de erros e notificações mais detalhadas para personalizar o script às suas necessidades. 

Postado

Você quer usar comandos powershell de dentro de um batch?

No caso teria que usar algo assim:

 

Powershell:

Export-VM -Name "NomeDaVM" -Path "C:\Caminho\Para\Exportacao"

 

Batch:

powershell -command "Export-VM -Name 'NomeDaVM' -Path 'C:\Caminho\Para\Exportacao'" 

 

  • Curtir 1
  • Membro VIP
  • Solução
Postado

@ricardo_br

1 hora atrás, ricardo_br disse:

Você quer usar comandos powershell de dentro de um batch?

No caso teria que usar algo assim:

 

Powershell:

Export-VM -Name "NomeDaVM" -Path "C:\Caminho\Para\Exportacao"

 

Batch:

powershell -command "Export-VM -Name 'NomeDaVM' -Path 'C:\Caminho\Para\Exportacao'" 

 

Boa noite.

 

Consegui fazer funcionar o backup das VM usando script abaixo, porém agora estou enroscado para conseguir enviar o e-mail com o log do backup.

Usamos o serviço da locaweb

E script para usar power shell tem que usar a extensão .ps1

Exemplo: backup_vm_sql.ps1

# Inicia o log Start-Transcript 
  -Path "C:\Logs\ExportVM_$(Get-Date -Format yyyyMMdd_HHmmss).txt" 
# Desliga a VM (se estiver ligada) 
  Stop-VM -Name "NomeDaVM" -Force # Exporta a VM Export-VM -Name "NomeDaVM" -Path "C:\Caminho\Para\Exportacao" 
# Envia um e-mail com o log (opcional) 
  Send-MailMessage -From "[email protected]" -To "[email protected]" -Subject "Exportação da VM concluída" -SmtpServer "servidor_smtp" -Body (Get-Content "C:\Logs\ExportVM_$(Get-Date -Format yyyyMMdd_HHmmss).txt") 
# Finaliza o log Stop-Transcript

 

 

Obrigado

  • Membro VIP
Postado

Bom dia

 

Para quem está criando script para colocar no agendador de tarefas do Windows, quando você criar o scrip você precisa mandar apontar para o executável do PowerShell, e em argumentos você vai apontar para o script que você criou.

backup.PNG.c46f7e5d3a600f5cde1deda7936804c1.PNG

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!