Daniel's Tech Blog

Cloud Computing, Cloud Native & Kubernetes

System Center 2012 R2 Virtual Machine Manager – Ändern des BITS Ports

Der ein oder andere dürfte den Fehler eventuell kennen, den Ben Armstrong in seinem Blogartikel beschreibt.

-> http://blogs.msdn.com/b/virtual_pc_guy/archive/2014/01/03/scvmm-r2-error-2912-no-param-when-using-hyper-v-replica.aspx

Der VMM legt standardmäßig bei der Installation den BITS Port für seine Kommunikation auf Port 443 fest, falls man nicht einen anderen bei der Installation vergibt. Wie im Falle von Ben Armstrong kann es vorkommen, dass gewisse Jobs des VMM fehlschlagen, da irgendeine Kommunikation, sei es auf dem VMM Management Server oder auf den Hyper-V, ebenfalls auf Port 443 stattfindet. In so einem Fall kann man entweder die Applikation/Technologie ausfindig machen und dieser einen anderen Port zuweisen oder man ändert im Nachhinein den BITS Port des VMM.

-> http://support.microsoft.com/kb/2405062

Der Artikel bezieht sich zwar noch auf die Versionen 2008 und 2008 R2. Er gilt aber genauso für die Versionen 2012, 2012 SP1 und 2012 R2. Wichtig dabei ist es nicht nur die Änderung in der Registry vorzunehmen, sondern auch die Firewallregeln auf dem VMM Management Server und den Hyper-V Hosts anzupassen.

Dazu habe ich ein kleines PowerShell Skript geschrieben, welches einem die Arbeit abnimmt. Der Aufruf erfolgt zum Beispiel so.

Set-SCVMMServerBitsPort –VMMServer vmmserver –Port 8500

image

-> Set-SCVMMServerBitsPort.zip

PowerShell Skript Set-SCVMMServerBitsPort:

function Set-SCVMMServerBitsPort
{
param
(
[Parameter(Mandatory=$true, HelpMessage=’VMM Server’)]
[String]
$VMMServer,
[Parameter(Mandatory=$false, HelpMessage=’VMM Server’)]
[String]
$Port=’8500′
)
#VMM Management Server configuration
Write-Host -ForegroundColor Yellow “BitsTcpPort on VMM Management Server $VMMServer is changed to $Port!”
Invoke-Command -ComputerName $VMMServer -ScriptBlock{
Set-ItemProperty -Path ‘HKLM:SOFTWAREMicrosoftMicrosoft System Center Virtual Machine Manager ServerSettings’ -Name ‘BITSTcpPort’ -Value $Port -ErrorAction Continue
$HTTPSRule=Get-NetFirewallRule -DisplayName ‘HTTPS’
$OldPort=$HTTPSRule|Get-NetFirewallPortFilter
Set-NetFirewallPortFilter -InputObject $OldPort -LocalPort $Port -ErrorAction Continue
$VMMBitsRule=Get-NetFirewallRule -DisplayName ‘Virtual Machine Manager Server’
foreach($Rule in $VMMBitsRule)
{
$OldPortVMM=$Rule|Get-NetFirewallPortFilter
if($OldPortVMM.LocalPort -eq $OldPort.LocalPort)
{
Set-NetFirewallPortFilter -InputObject $OldPortVMM -LocalPort $Port -ErrorAction Continue
}
}
Restart-Service -Name SCVMMService -WarningAction SilentlyContinue
Restart-Service -Name SCVMMAgent -WarningAction SilentlyContinue
} -ArgumentList $Port -ErrorAction Continue

#Hyper-V hosts configuration
$VMMManagedHosts=Get-SCVMHost -VMMServer $VMMServer
foreach($VMMManagedHost in $VMMManagedHosts)
{
$Online=Test-NetConnection -ComputerName $VMMManagedHost
if($Online.PingSucceeded -eq $true){
Write-Host -ForegroundColor Green “Hyper-V host $VMMManagedHost is online!”
Write-Host -ForegroundColor Yellow “$Port is added as port to firewall rule HTTPS on Hyper-V host $VMMManagedHost!”
Invoke-Command -ComputerName $VMMManagedHost -ScriptBlock{
param ($Port)
$HTTPSRule=Get-NetFirewallRule -DisplayName ‘HTTPS’
$OldPort=$HTTPSRule|Get-NetFirewallPortFilter
Set-NetFirewallPortFilter -InputObject $OldPort -LocalPort $Port -ErrorAction Continue
Restart-Service -Name SCVMMAgent -WarningAction SilentlyContinue
} -ArgumentList $Port -ErrorAction Continue
}
else{
Write-Host -ForegroundColor Red “Hyper-V host $VMMManagedHost is offline!”
}
}
}


Posted

in

,
WordPress Cookie Notice by Real Cookie Banner