Nesse pequeno artigo vamos mostrar como efetuar a remoção de um servidor já registrado com o Hyper-V Azure Site Recovery. Essa situação pode ser encontrada em uma reconfiguração do seu Host físico para um novo Site Hyper-V dentro do Azure. Vamos ver na prática como funciona esse processo e sua resolução.
Ao instalação o agente de comunicação com o Microsoft Azure, tudo parece estar indo bem, como mostramos na imagem abaixo:
Mas logo recebemos a informação que esse servidor físico já está registrado em nossa conta do Microsoft Azure. Ao clicar em concluir para efetuar um novo registro, o agente recebe um “Crash” e não conseguimos selecionar no chave “Vault” para um novo registro.
Para resolver esse problema, devemos rodar o seguinte comando via PowerShell para remover todos os registros existente.
MUITO IMPORTANTE: ANTES DE RODAR ESSE COMANDO, ESTEJA CIENTE QUE ISSO IRÁ REMOVER TODO REGISTRO DO SERVIDOR ATUAL COM O MICROSOFT AZURE. ESTEJA SEGURO QUE REALMENTE NÃO EXISTE NENHUMA VM REPLICADA, POIS O SERVIDOR FÍSICOS SERÁ 100% REMOVIDO.
Com a confirmação que realmente deseja remover o servidor atual e efetuar novamente o seu registro, rode o comando abaixo:
pushd .
try
{
$windowsIdentity=[System.Security.Principal.WindowsIdentity]::GetCurrent()
$principal=new-object System.Security.Principal.WindowsPrincipal($windowsIdentity)
$administrators=[System.Security.Principal.WindowsBuiltInRole]::Administrator
$isAdmin=$principal.IsInRole($administrators)
if (!$isAdmin)
{
“Please run the script as an administrator in elevated mode.”
$choice = Read-Host
return;
}
$error.Clear()
“This script will remove the old Azure Site Recovery Provider related properties. Do you want to continue (Y/N) ?”
$choice = Read-Host
if (!($choice -eq ‘Y’ -or $choice -eq ‘y’))
{
“Stopping cleanup.”
return;
}
$serviceName = “dra”
$service = Get-Service -Name $serviceName
if ($service.Status -eq “Running”)
{
“Stopping the Azure Site Recovery service…”
net stop $serviceName
}
$asrHivePath = “HKLM:\SOFTWARE\Microsoft\Azure Site Recovery”
$registrationPath = $asrHivePath + ‘\Registration’
$proxySettingsPath = $asrHivePath + ‘\ProxySettings’
$draIdvalue = ‘DraID’
$idMgmtCloudContainerId=’IdMgmtCloudContainerId’
if (Test-Path $asrHivePath)
{
if (Test-Path $registrationPath)
{
“Removing registration related registry keys.”
Remove-Item -Recurse -Path $registrationPath
}
if (Test-Path $proxySettingsPath)
{
“Removing proxy settings”
Remove-Item -Recurse -Path $proxySettingsPath
}
$regNode = Get-ItemProperty -Path $asrHivePath
if($regNode.DraID -ne $null)
{
“Removing DraId”
Remove-ItemProperty -Path $asrHivePath -Name $draIdValue
}
if($regNode.IdMgmtCloudContainerId -ne $null)
{
“Removing IdMgmtCloudContainerId”
Remove-ItemProperty -Path $asrHivePath -Name $idMgmtCloudContainerId
}
“Registry keys removed.”
}
# First retrieve all the certificates to be deleted
$ASRcerts = Get-ChildItem -Path cert:\localmachine\my | where-object {$_.friendlyname.startswith(‘ASR_SRSAUTH_CERT_KEY_CONTAINER’) -or $_.friendlyname.startswith(‘ASR_HYPER_V_HOST_CERT_KEY_CONTAINER’)}
# Open a cert store object
$store = New-Object System.Security.Cryptography.X509Certificates.X509Store(“My”,”LocalMachine”)
$store.Open(‘ReadWrite’)
# Delete the certs
“Removing all related certificates”
foreach ($cert in $ASRcerts)
{
$store.Remove($cert)
}
}catch
{
[system.exception]
Write-Host “Error occurred” -ForegroundColor “Red”
$error[0]
Write-Host “FAILED” -ForegroundColor “Red”
}
popd
Como segunda alternativa, você poderá remover a chave de registro no seguinte caminho:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Azure Site Recovery\Registration
Pronto! O seu servidor estará limpo e pronto para receber sua chave Vault para um novo registro.
Esperamos que essa pequena dica ajude a todos os administradores e profissionais que utilizam os produtos de nuvem Microsoft.