I stumbled across this error the other day in my environment No Connection to VR Server: Unknown. I then found the following workaround in this VMware KB https://kb.vmware.com/s/article/2148376, which worked nicely.

The issue was becoming a little frequent, so I decided to wrap up this solution with a nice little PowerShell function found on my Github page.
function Disable-VmReplicationState { <# .Synopsis Disables VM Replication State .DESCRIPTION Disables VM Replication State Requires Posh-SSH - Install-Module Posh-SSH to Run on Powershell 7 Posh-SSH version 3.x or higher is required. .EXAMPLE Disable-VmReplicationState -vCenter "vc.virtuallywired.io" -VcCredentials $vccreds -VmName $vm -EsxiCredentials $esxicreds .INPUTS vCenter and ESXi credentials must be Encrypted, VM names can be array of VMs. .OUTPUTS Output from this cmdlet (if any) .NOTES Must be connected to vCenter for this function to operate and vCenter and ESXi credentials must be Encrypted. .AUTHOR Nicholas Mangraviti - virtuallywired.io #> [CmdletBinding(DefaultParameterSetName = 'Parameter Set 1', SupportsShouldProcess = $true, PositionalBinding = $false, HelpUri = 'http://www.microsoft.com/', ConfirmImpact = 'Medium')] [Alias()] [OutputType([String])] Param ( #Specifies vCenter IP / URL [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Parameter Set by Properties')] [ValidateNotNull()] [string] $vCenter, #Specifies vCenter Credentials [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Parameter Set by Properties')] [ValidateNotNull()] [System.Management.Automation.PSCredential] $VcCredentials, #Specifies ESXi root Credentials [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Parameter Set by Properties')] [ValidateNotNull()] [System.Management.Automation.PSCredential] $EsxiCredentials, #Specifies VM Name [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Parameter Set by Properties')] [ValidateNotNull()] [array] $VmNames ) If ($null -eq (Get-Module -Name Posh-SSH -ErrorAction SilentlyContinue)) { Import-Module "Posh-SSH" -Force:$true -WarningAction SilentlyContinue } ## Connecting to vCenter Server ## Write-Host "Connecting to vCenter Server: $($vCenter)" Start-Sleep -Seconds 1 $server = Connect-VIServer -Server $vCenter -Credential $VcCredentials If ($server.IsConnected -eq $true) { Write-Host "Successfully Connected to $($server.Name)" } else { Write-Host "Failed to Connect to vCenter Server: $($vc)" -ForegroundColor Red Write-Host "--- Script Aborted! ---" -ForegroundColor Red Exit } $GetVM = Get-VM $VMs = $GetVM | Where-Object { $_.name -in $VmNames } $InvalidVMs = $vmnames | Where-Object { $_ -notin $GetVM.name } If ($InvalidVMs -gt "") { Foreach ($InvalidVM in $InvalidVMs) { Write-Host "Note, the following VM '$($InvalidVM)' was not found" -ForegroundColor Red Start-Sleep -Seconds 1 } } Foreach ($VM in $VMs) { $VmHost = Get-VM $vm | Get-VMHost Write-Host "Enabling SSH on $($VmHost)" $sshpolicy = Get-VMHostService -VMHost $VmHost | Where-Object { $_.Key -eq "TSM-SSH" } If ($sshpolicy.Running -eq $false) { $result = Start-VMHostService $sshpolicy -Confirm:$false } $ssh = New-SSHSession -ComputerName $VmHost -Credential $EsxiCredentials -Acceptkey -WarningAction SilentlyContinue If ($ssh.Connected -eq $true) { Write-Host "Successfully Connected to '$($VmHost)'" Start-Sleep -Seconds 1 [string]$vmID = ((Invoke-SSHCommand $ssh -Command "vim-cmd vmsvc/getallvms | grep $VM").output).substring(0, 7).trim() [String]$output = (Invoke-SSHCommand $ssh -Command "vim-cmd hbrsvc/vmreplica.getState $vmID").output If ($output -like "*The VM is configured for replication.*") { Write-host -ForegroundColor Yellow "$($VM) is configured for replication and will now be disabled." $DisableResult = (Invoke-SSHCommand $ssh -Command "vim-cmd hbrsvc/vmreplica.disable $vmID").output # << Disable Command Write-Host "Disconnecting from $($VMHost)" $Session = Get-SSHSession | Remove-SSHSession Write-Host "Disabling SSH on $($VmHost)" $sshpolicy = Get-VMHostService -VMHost $VmHost | Where-Object { $_.Key -eq "TSM-SSH" } If ($sshpolicy.Running -eq $true) { $result = Stop-VMHostService $sshpolicy -Confirm:$false } } else { Write-host -ForegroundColor Green "$($vm) is NOT configured for replication, exiting." Write-Host "Disconnecting from $($VMHost)" $Session = Get-SSHSession | Remove-SSHSession Write-Host "Disabling SSH on $($VmHost)" $sshpolicy = Get-VMHostService -VMHost $VmHost | Where-Object { $_.Key -eq "TSM-SSH" } If ($sshpolicy.Running -eq $true) { $result = Stop-VMHostService $sshpolicy -Confirm:$false } } } } Write-Host "Disconnecting vCenter $($vCenter)" Disconnect-VIServer * -Confirm:$false }
Thanks for reading, I hope you found this function useful, If you need help running this, feel free to comment below or reach out to me on Twitter @nmangraviti
thank you for sharing this VW.
My pleasure 🙂