terça-feira, 10 de novembro de 2015

Converter instalações do Windows Standard para Enterprise ou Datacenter sem reinstalar o S.O

Em algumas situações, alguns administradores de ambiente são obrigados a mudar o sistema operacional de seu servidor de uma versão Standard para uma versão Enterprise ou até mesmo Datacenter por questões de licenciamento, funcionalidades adicionais ou até mesmo compatibilidade com alguns softwares de terceiros.

Em cima disso, a partir do Windows Server 2008 R2 a Microsoft disponibilizou um utilitário que é capaz de realizar esse "upgrade" sem a utilização de mídia ou reinstalação do seu S.O para versão desejada. 

Esse utilitário é o DISM (Deployment Image Servicing and Management). Como o objetivo aqui é uma demo de como funciona a conversão através desse utilitário, não entrarei em detalhes, portanto para quem quiser conhecer mais deixo aqui o link para consultas e referencias.


Mãos à obra...

Aqui vou demonstrar uma conversão a partir de um Windows Server 2008 R2 Standard para Windows Server 2008 R2 Datacenter.

Vale lembrar que o mesmo procedimento passado aqui, funciona para Windows Server 2012 e 2012 R2.


1) Abra um prompt em modo elevado (como administrador). 
    Veja no desktop que a versão atual é a Standard.



2) Execute o comando: DISM /online /Get-CurrentEdition
    Esse comando irá listar a versão atual do sistema operacional do servidor.



3) Agora precisamos saber para quais versões podemos converter nossa instalação. Rode o comando:

DISM /online /Get-TargetEditions
 
   A imagem abaixo mostra o resultado do comando onde é possível ver que nesse caso podemos          converter a instalação para ServerDataCenter e ServerEnterprise. 


4) Como dito anteriormente, vamos converter a instalação para DataCenter. Rode o comando abaixo:

DISM /online /Set-Edition:ServerDataCenter /productkey:74YFP-3QFB3-KQT8W-PMXWJ-7M648

* Obs.: A chave utilizada no comando acima, trata-se de uma chave genérica KMS do Windows Server 2008 R2 DataCenter. Essa chave é utilizada apenas para converter a instalação, ela não irá ativar definitivamente o seu servidor durante o processo de conversão. 

No link https://technet.microsoft.com/pt-br/library/jj612867.aspx , você poderá ter uma relação completa das chaves de acordo com a versão do Windows Server para o qual você deseja converter.

Para que ocorra a ativação definitiva, após todo o processo de conversão, você deverá inserir uma chave valida (original) que sua empresa possui a partir de um contrato de licenciamento por volume.



Depois de rodar o comando para converter a instalação, você terá uma tela parecida com a abaixo.

Após isso, o Windows Server solicitará para reiniciar por 2 vezes.

Depois de reiniciado, já é possível ver que o Windows foi convertido para versão Datacenter.



* Uma nota importante é que esse procedimento não deverá ser executado em servidores de Active Directory.


Abraços!

Não é possível abrir VM a partir da console do Hyper-V Manager


Situação: A partir da console do Hyper-V Manager você tenta abrir uma VM qualquer e recebe o erro abaixo:

A connection will not be made because credentials may not be sent to the remote computer. For assistance, contact you system administrator


Solução:

1) Na console do Hyper-V Manager, clique em Hyper-V Settings...



2) Navegue até User Credentials e depois habilite a opção Use default credentials automatically (no prompt).

depois clique em aplicar e pronto, você já conseguira conectar novamente em sua VM a partir da console.



Abraços!

terça-feira, 15 de setembro de 2015

Automatizando Backup de VMs Hyper-V com o Veeamzip 8

Hoje compartilharei com vocês um procedimento para automatizar backup de seus servidores virtuais através da ferramenta da Veeam, o Veeam Backup Free Edition versão 8.

Como o próprio nome diz, o Veeam Backup, trata-se de uma ferramenta totalmente gratuita que permite que você realize backups constantes de suas maquinas virtuais (Hyper-V | VMware) de maneira muito simples e intuitiva sem precisar pausar ou desligar suas VMs.

Por se tratar de uma versão free, a unica limitação dessa versão é a impossibilidade de agendar tarefas de backup de suas VMs. Obrigando dessa maneira você iniciar os backups "na mão" através de sua console de gerenciamento.

Claro que na versão full, além de você poder criar/agendar jobs de backup de suas VMs, você tem outras inúmeras funcionalidades muito uteis e interessantes para quem tem um ambiente de virtualização mais complexo. Mas o nosso proposito aqui é usufruir da versão Free.

Bem, graças a um update recente (Update 2) para a versão 8 do Veeam Backup Free Edition, é possível utilizar o módulo PowerShell do Veeam e escrever um script para realizar o backup de suas VMs e posteriormente utilizar o Task Scheduler do Windows para agendar a execução desse script.

Para obter o Veeam bem como a sua atualização, pesquise na internet por Veeam Backup Free Edition v8 ou entre no link atual do produto:

Obs,: É necessário realizar um cadastro para realizar o download do produto.


A instalação de Veeam é bem simples, mas para quem tiver alguma duvida, pode consultar a documentação online do passo a passo:



Muito Importante!!! Durante a instalação, será solicitado para escolher as funções que deseja instalar, nessa etapa você deverá obrigatoriamente habilitar a opção Veeam Backup & Replication PowerShell SDK (destacada em vermelho na imagem abaixo).



Script PowerShell para Backup de Virtual Machines

Para realizar o backup das VMs, vamos utilizar o script PowerShell abaixo. Consegui esse script na internet e fiz algumas alterações. 

Como a maioria dos clientes que atendo usam Hyper-V, o script abaixo está escrito para realizar somente backup de VMs rodando sobre Hyper-V.

Copie o código abaixo em um bloco de notas e salve o mesmo como VeeamBackupVMs.ps1.
ou faça download do script pronto através do link abaixo:


##################################################################
#                   Script de Backup VMs - Hyper-V
##################################################################

# Nome das VMs como elas aparecem na console Hyper-V separadas por virgula. Exemplo, $VMNames = “VM1”,”VM2”
$VMNames = "VM1","VM2"

# Hostname ou IP do host Hyper-V ou VCenter onde estão rodando as VMs
$HostName = "IP do Servidor Hyper-V"

# Diretorio onde serao salvos os backups (Exemplo: C:\Backup\Virtual_Machines)
$Directory = "C:\Backup\Virtual_Machines"

# Nivel de compressão do Backup (Valores: 0 - None, 4 - Dedupe-friendly, 5 - Optimal, 6 - High, 9 - Extreme) 
$CompressionLevel = "5"

# Quiesce VM when taking snapshot (Optional; VMware Tools are required; Possible values: $True/$False)
$EnableQuiescence = $True

# Protect resulting backup with encryption key (Optional; $True/$False)
$EnableEncryption = $False

# Encryption Key (Optional; path to a secure string)
$EncryptionKey = ""

# Retencao do Backup (Por padrão, os arquivos VeeamZIP não removidos e serão mantidos no local onde foi salvo por periodo indeterminado
# Valores: Never , Tonight, TomorrowNight, In3days, In1Week, In2Weeks, In1Month)
$Retention = "Never"

##################################################################
#                   Configuracoes de Email
##################################################################

# Ativando ou Desativando Alertas por Email
$EnableNotification = $True

# Email SMTP server
$SMTPServer = "IP do seu servidor Relay SMTP"

# Email FROM
$EmailFrom = "endereco de email que enviara as notificacoes do backup" 

# Email TO
$EmailTo = "endereco de email que recebera as notificacoes do backup"

# Email subject
$EmailSubject = "[BACKUP VM] - Backup Report VM - Veeam Backup"

##################################################################
#                   Formatacao do corpo do Email
##################################################################

$style = "<style>BODY{font-family: Arial; font-size: 10pt;}"
$style = $style + "TABLE{border: 1px solid black; border-collapse: collapse;}"
$style = $style + "TH{border: 1px solid black; background: #dddddd; padding: 5px; }"
$style = $style + "TD{border: 1px solid black; padding: 5px; }"
$style = $style + "</style>"

##################################################################
#                   Declaracao das Variaveis
##################################################################

#################### DA PARTIR DESSE PONTO, NAO ALTERAR NENHUMA LINHA ################
Asnp VeeamPSSnapin

$Server = Get-VBRServer -name $HostName
$MesssagyBody = @()

foreach ($VMName in $VMNames)
{
  $VM = Find-VBRHvEntity -Name $VMName -Server $Server
  
  If ($EnableEncryption)
  {
    $EncryptionKey = Add-VBREncryptionKey -Password (cat $EncryptionKey | ConvertTo-SecureString)
    $ZIPSession = Start-VBRZip -Entity $VM -Folder $Directory -Compression $CompressionLevel -DisableQuiesce:(!$EnableQuiescence) -AutoDelete $Retention -EncryptionKey $EncryptionKey
  }
  
  Else 
  {
    $ZIPSession = Start-VBRZip -Entity $VM -Folder $Directory -Compression $CompressionLevel -DisableQuiesce:(!$EnableQuiescence) -AutoDelete $Retention
  }
  
  If ($EnableNotification) 
  {
    $TaskSessions = $ZIPSession.GetTaskSessions().logger.getlog().updatedrecords
    $FailedSessions =  $TaskSessions | where {$_.status -eq "EWarning" -or $_.Status -eq "EFailed"}
  
  if ($FailedSessions -ne $Null)
  {
    $MesssagyBody = $MesssagyBody + ($ZIPSession | Select-Object @{n="Name";e={($_.name).Substring(0, $_.name.LastIndexOf("("))}} ,@{n="Start Time";e={$_.CreationTime}},@{n="End Time";e={$_.EndTime}},Result,@{n="Details";e={$FailedSessions.Title}})
  }
   
  Else
  {
    $MesssagyBody = $MesssagyBody + ($ZIPSession | Select-Object @{n="Name";e={($_.name).Substring(0, $_.name.LastIndexOf("("))}} ,@{n="Start Time";e={$_.CreationTime}},@{n="End Time";e={$_.EndTime}},Result,@{n="Details";e={($TaskSessions | sort creationtime -Descending | select -first 1).Title}})
  }
  
  }   
}
If ($EnableNotification)
{
$Message = New-Object System.Net.Mail.MailMessage $EmailFrom, $EmailTo
$Message.Subject = $EmailSubject
$Message.IsBodyHTML = $True
$message.Body = $MesssagyBody | ConvertTo-Html -head $style | Out-String
$SMTP = New-Object Net.Mail.SmtpClient($SMTPServer)
$SMTP.Send($Message)
}




Basicamente, a unica coisa que muda no script para backups de Hyper-V ou VMware, é a entidade na linha 76, como mostra as imagens abaixo.



Entidade para Backups de VMs em Hyper-V


 Entidade para Backups de VMs em VMware


Agendando execução do script PowerShell pelo Task Scheduler

Abra o Task Scheduler e siga as etapas abaixo:


clique em criar tarefa básica



De um nome e uma descrição para nova tarefa


No nosso exemplo, vou criar uma tarefa para executar 5 dias na semana.   Mas no de vocês, escolham a frequência que mais se enquadra com seu ambiente.


Escolha os dias de execução do script


Escolha iniciar um programa


Powershell –file “Caminho do arquivo VeeamBackupVMs.ps1”


Caso apareça o alerta abaixo, clique em sim


Clique em concluir


Opcionalmente você pode usar outra ferramenta agendar a execução do script de Backup. Eu particularmente gosto de uma chamada System Scheduler.

Caso se interessem, podem baixa-la através do link abaixo:



Bem, é isso, espero que seja útil.

Abraços!!!

segunda-feira, 1 de junho de 2015

Certificado Digital: Opção de exportar chave privada desabilitada

Em alguns casos quando precisamos exportar o certificado digital já instalado em um computador/servidor para posterior instalação em outro dispositivo, podemos nos deparar com a situação da imagem abaixo:

O problema aqui é que ao tentarmos exportar o certificado digital, a opção de exportar a chave privada não está acessível.




Isso ocorre porque no momento em que o certificado foi importado, a opção "Mark this key as exportable. This will allow you to back up or transport your keys at a later time" não foi habilitada.

Essa opção basicamente permite que depois de instalado, o certificado possa ser exportado como forma de backup ou para ser instalado em outros dispositivos. A imagem abaixo mostra a opção habilitada, o que nesse caso permite a exportação futura desse certificado.



Blz! Mas afinal, como podemos fazer para exportar o certificado juntamente com sua chave privada, já que a opção de exportar chave privada não está disponível ???

Para isso vamos utilizar uma ferramenta chamada Jailbreak. Estou disponibilizando a ferramenta para download no link: https://mega.co.nz/#!lZty1LSL!8LEw5uV117inU-d8nXSFzHwOUgBnKA5TeTVsyi3ZN9w

Jailbreak é uma ferramenta para exportar certificados marcados como não-exportável na console de certificados no MMC do Windows. 

Bem, vamos colocar a mão na massa:

1) Depois de realizar o download, descompacte a pasta em um local de sua preferencia, em nosso exemplo extraímos na unidade C:\

2) No computador onde o certificado já está instalado, abra um prompt de comando como administrador, entre no diretório do Jailbreak e rode os comandos abaixo:


jbstore -l  
Obs.: Nesse comando utilizamos o parâmetro -l (é a letra e não o numero um)


O comando acima, irá listar todos os certificados já instalados no computador. Em nosso caso só existe um certificado instalado que é o MEUCERTIFICADO.

Não vou entrar em detalhes de certificados, mas quando instalamos um certificado no Windows, podemos instalar o mesmo como conta de usuário ou como conta de computador. Em nosso exemplo, estamos utilizando o modo conta de usuário, que é o padrão do Jailbreak.

Em cenários em que o certificado está instalado em modo conta de computador, devemos rodar o comando abaixo, que basicamente passa o parâmetro -s "SYSTEM" (o -s é de storage)

jbstore -l -s "SYSTEM" 


3) Depois de listar o nome do certificado, agora devemos rodar o comando abaixo para exportar o certificado já com sua chave privada incorporada.


jbstore -1 -n "Nome_do_seu_certificado"
Obs 1.: Diferente do comando de listar, aqui utilizamos o parâmetro -1 (numero um) 
Obs 2.: O nome do certificado deve ser exatamente como o o nome listado no comando anterior


Para certificados instalados na conta de computador, rodar o comando abaixo:
jbstore -1 -s "SYSTEM" -n "Nome_do_seu_certificado"

Depois de executado, o comando irá salvar automaticamente um novo certificado junto com a chave privada no diretório do Jailbreak com o nome de out.pfx como mostrado a imagem abaixo:

Além disso, por padrão o Jailbreak cria uma senha para futuras importações desse certificado. Essa senha padrão é "password"



Feito isso, é só você renomear o certificado out.pfx para um nome de sua preferencia e pronto!!! 
O certificado estará disponível para ser importado com chave privada em um novo dispositivo.

Abraços!

quinta-feira, 28 de maio de 2015

Hyper-V Replica: Replicação de VMs entre Hosts Win2012R2 e Win2012

Olá pessoal,

A informação de hoje é simples, mas tive que montar um lab para chegar a conclusão do mesmo, pois não encontrei nenhuma documentação/informação oficial da Microsoft para esse caso.

Trata-se da compatibilidade entre o Windows Server 2012 R2 e Windows Server 2012 replicarem VMs entre si através do Hyper-V Réplica.

O cenário do cliente conforme imagem abaixo se resume ao seguinte:

CPD Local:      Rodando várias VMs em cima do Windows Server 2012 R2
CPD Remoto:  Servidor de destino para replicas das VMs rodando Windows Server 2012

O problema encontrado foi que ao tentarmos habilitar a replicação de uma VM rodando no Hyper-V-01 para o Hyper-V 02, recebemos a mensagem de erro abaixo:


A mensagem acima quer dizer que a versão do Sistema Operacional do Hyper-V 02, deve ser igual ou mais recente do que a do Servidor Hyper-V 01, ou seja:

"Não é possível replicar VMs  a partir do Windows Server 2012 R2 para Windows Server 2012."

Já no cenário inverso (Windows 2012 para Windows 2012 R2) a replicação ocorrerá sem nenhum problema.


Fica ai a informação!

Abraços!