Virtuális gépek virtuális hálózatok közötti feladatátvételének konfigurálása
Fontos
A Virtual Machine Manager (VMM) ezen verziója elérte a támogatás végét. Javasoljuk, hogy frissítsen a VMM 2022-re.
Ez a cikk azt ismerteti, hogyan kezelheti a virtuális gépek replikálását és feladatátvételét a System Center – Virtual Machine Managerben (VMM) a virtuális hálózatok között, ha nem az Azure Site Recovery szolgáltatást használja a vészhelyreállítás kezeléséhez.
- Javasoljuk, hogy virtuális gépek replikálásához az Azure Site Recoveryt használja. A VMM a Hyper-V replikákat Site Recovery nélkül nem kezeli, így a Hyper-V replikákon végzett műveletekhez Hyper-V replikákhoz szolgáló PowerShell-parancsmagokat kell használni.
- Vészhelyreállításhoz külön elsődleges és másodlagos virtuális hálózatok használatát javasoljuk. Az elsődleges virtuális gépek az elsődleges hálózathoz, míg a replika virtuális gépek a másodlagos hálózathoz kapcsolódnak. Ezzel biztosítható, hogy egyszerre mindkét virtuális gép hálózathoz csatlakoztatható legyen.
- Ha egyetlen virtuális hálózattal rendelkezik, a Site Recovery használatával automatizálhatja a hálózatkezelést a hálózatleképezési funkcióval. Ha nem használja a Site Recoveryt, körültekintően ellenőrizze az előfeltételeket és azt, hogy a virtuális gépek milyen sorrendben vannak csatlakoztatva a hálózathoz. Fontos, hogy a replika virtuális gép és az elsődleges virtuális gép párhuzamosan nem csatlakozhat ugyanahhoz a virtuális hálózathoz, Ellenkező esetben előfordulhat, hogy a CA-PA-rekordok törlődnek a VMM-ben, és hálózati kapcsolatvesztést okoznak.
Megoldásminta
Ez a megoldásminta az alábbi környezet használja:
- Egy VMM-kiszolgáló felügyeli mind az elsődleges, mind a másodlagos helyeket.
- Az elsődleges és a replika virtuális gépek egyetlen Hyper-V virtuális hálózatban üzemelnek.
- Tervezett feladatátvételt szeretne végrehajtani, és a feladatátvétel után meg szeretné tartani a virtuális gép IP-címét.
- A virtuális gépek IPv4-címekkel rendelkeznek.
Előkészületek
Győződjön meg arról, hogy a virtuális kapcsoló és a logikai kapcsoló beállításai érvényesek és megegyeznek a VMM-hálóban. Ellenkező esetben a feladatátvétel utáni hálózatcsatolási műveletek sikertelenek lehetnek.
Az elsődleges virtuális gépnek csatlakoznia kell a virtuális hálózathoz
A replika virtuális gép nem lehet hálózathoz csatlakoztatva
Az elsődleges virtuális gép egyes hálózati adaptereihez csak egy-egy IP-cím lehet hozzárendelve. Ezt az alábbi parancs futtatásával ellenőrizheti. Ha egynél több hálózati adapter van csatlakoztatva a virtuális gépen, a parancsot a tömbindex megváltoztatásával futtassa mindegyik adapter esetében.
$VMOnPD = Get-SCVirtualMachine -Name "VM Name" | where {$_.IsPrimaryVM -eq $true} Get-SCIPAddress –GrantToObjectId $VMOnPD.VirtualNetworkAdapters[0].ID``
Győződjön meg arról, hogy az operációs rendszer által a virtuális géphez rendelt IP-cím megegyezik a fent látható IP-címmel. Jelentkezzen be a virtuális gépre, és futtassa az ipconfig parancsot ennek ellenőrzéséhez.
Ellenőrizze, hogy a keresési táblák megfelelően vannak-e beállítva az elsődleges és a replikán. Ehhez futtassa a következő parancsot az egyes kiszolgálókon, és győződjön meg arról, hogy a fent visszaadott IP-címnek megfelelő bejegyzés található:
Get-NetVirtualizationLookupRecord
Ügyeljen rá, hogy az IP-cím IPv4, és nem IPv6 típusú legyen
A szkriptek futtatása előtt győződjön meg arról, hogy mindkét virtuális gép ki van kapcsolva.
Győződjön meg arról, hogy a replikáció állapota mindkét virtuális gépen engedélyezve van.
A tervezett feladatátvételi parancsfájl futtatása
A parancsfájl az alábbi műveleteket végzi el:
- Az elsődleges virtuális gép minden hálózati adapterére vonatkozóan tárolja az IP-címeket, a virtuálisgép-hálózatot és az IP-címkészletet.
- Az elsődleges és másodlagos virtuális gépek minden hálózati adapterén feloldja az IP-címeket.
- Leválasztja az összes hálózati adaptert.
- Feladatátvételt végez az elsődleges és másodlagos virtuális gépeken.
- Szükség esetén visszirányú replikálást indít el.
- Ugyanazt az IP-címet osztja ki a replika virtuális gépnek (minden hálózati adapter esetén).
- A replika virtuális gép minden hálózati adapterét az 1. lépésben eltárolt virtuálisgép-hálózatokhoz csatolja.
A szkript futtatása
A parancsfájlnak két argumentuma van:
- $VMName – a virtuális gép neve
- $ReverseRep – Logikai argumentum annak megadásához, hogy a fordított replikációt végre kell-e hajtani vagy sem
- Ha $true ad át, akkor a fordított replikáció azonnal elindul, és később nem szakíthatja meg a feladatátvételt.
- Ha a $ReverseRep értéke $true, és a parancsfájl futása sikeresen befejeződött:
- Az elsődleges virtuális gépnek készen kell állnia tervezett feladatátvétel replikációs állapotra.
- A replika virtuális gépének feladatátvételi teljes replikációs állapotban kell lennie.
- Ha $false érték van megadva, akkor a visszirányú replikálás nem történik meg. ReverseRepORCancelFO.ps1 a fordított replikáció végrehajtására vagy a feladatátvétel megszakítására használható.
- Ha a $ReverseRep értéke $false, és a parancsfájl futása sikeresen befejeződött:
- Az elsődleges virtuális gépnek készen kell állnia tervezett feladatátvétel replikációs állapotra.
- A replika virtuális gépének feladatátvételi teljes replikációs állapotban kell lennie.
Ha a szkript egyik lépést sem hajtja végre, manuálisan kell elvégeznie a sikertelen lépéseket, majd vissza kell térnie a PowerShell-ablakhoz. A szkript lépései közé tartozik az elsődleges virtuális gép feladatátvétele, a replika virtuális gép feladatátvétele és opcionálisan a fordított replikáció.
Futtassa az alábbi parancsfájlt:
Param(
[Parameter(Mandatory=$True)]
[string]$VMName,
[Parameter(Mandatory=$true)]
[boolean]$ReverseRep
)
# the script running on system with SCVMM Console/PowerShell installed. Also, requires Hyper-V powershell module.``
Import-Module hyper-v
## Refresh VM configuration and initialize
Write-Host -ForegroundColor Green (Get-Date) ".....Refreshing the VMs..."
Get-SCVirtualMachine -Name $VMName | Read-SCVirtualMachine
$VMOnPD = Get-SCVirtualMachine -Name $VMName | where {$_.IsPrimaryVM -eq $true}
$VMOnDR = Get-SCVirtualMachine -Name $VMName | where {$_.IsPrimaryVM -eq $false}
if ($VMOnPD.StatusString -ne "Stopped")
{
write-host -ForegroundColor Red (Get-Date) "....VM is not in stopped state. Actual State " $VMOnPD.StatusString
write-host -ForegroundColor Red (Get-Date) "....Exiting"
exit 1
}
$error.Clear()
$VMRepConfig = Get-VMReplication -ComputerName $VMOnPD.HostName -VMName $VMOnPD.Name
$VMRepConfig = Get-VMReplication -ComputerName $VMOnDR.HostName -VMName $VMOnPD.Name
if ($error -ne 0)
{
$temp = $VMOnPD.HostName.Split(".")
$primaryHostName = $temp[0]
$temp = $VMOnDR.HostName.Split(".")
$recoveryHostName = $temp[0]
write-host -ForegroundColor Red (Get-Date) "....Error in getting VM Replication state using FQDN, switching to Hostname"
write-host -ForegroundColor Yellow (Get-Date) "....Primary Hostname: " $primaryHostName " Replica Hostname: " $recoveryHostName
$error.Clear()
$VMRepConfig = Get-VMReplication -ComputerName $primaryHostName -VMName $VMOnPD.Name
$VMRepConfig = Get-VMReplication -ComputerName $recoveryHostName -VMName $VMOnPD.Name
if ($error -ne 0)
{
write-host -ForegroundColor Red (Get-Date) "....Error in getting VM Replication state using Hostname"
write-host -ForegroundColor Red (Get-Date) "....Exiting"
exit 1
}
write-host -ForegroundColor Green (Get-Date) "....Successful in getting VM Replication state using Hostname"
}
else
{
$primaryHostName = $VMOnPD.HostName
$recoveryHostName = $VMOnDR.HostName
}
$VMOnPDAdapter = Get-SCVirtualNetworkAdapter -VM $VMonPD
$VMOnDRAdapter = Get-SCVirtualNetworkAdapter -VM $VMonDR
$fileName = $VMName + (Get-Date).ToString() + ".txt"
$fileName = $fileName.Replace("/","_")
$fileName = $fileName.Replace(":","_")
Write-Host -ForegroundColor Yellow (Get-Date) "....Dumping network information for $VMName to file $fileName"
Write-Host -ForegroundColor Yellow (Get-Date) "....Number of Network adapters found: " $VMOnPDAdapter.count
$VMNetwork = @()
$VMSubnet = @()
$Pools = @()
$counter = 0
foreach($vmAdapter in $VMOnPDAdapter)
{
if ($vmAdapter.VMNetwork -eq $null)
{
$VMNetwork = $VMNetwork + $null
$VMSubnet = $VMSubnet + $null
$Pools = $Pools + $null
$counter = $counter + 1
continue
}
$VMNetwork = $VMNetwork + (Get-SCVMNetwork -Name $vmAdapter.VMNetwork.Name -ID $vmAdapter.VMNetwork.ID)
$VMSubnet = $VMSubnet + (Get-SCVMSubnet -Name $vmAdapter.VMSubnet.Name | where {$_.VMNetwork.ID -eq $vmAdapter.VMNetwork.ID})
#$PortClassification = Get-SCPortClassification | where {$_.Name -eq "Guest Dynamic IP"}
$Pools = $Pools + (Get-SCStaticIPAddressPool -IPv4 | where {$_.VMsubnet.name -eq $vmAdapter.VMSubnet.Name})
Out-File -FilePath $fileName -InputObject $VMNetwork[$counter] -Append
Out-File -FilePath $fileName -InputObject $VMSubnet[$counter] -Append
Out-File -FilePath $fileName -InputObject $Pools[$counter] -Append
$counter = $counter + 1
}
if ($error.Count -ne 0)
{
write-host -ForegroundColor Red (Get-Date) "....Error is gathering information for $VMName. No changes made"
write-host -ForegroundColor Red (Get-Date) "....Exiting"
exit 1
}
$IP = @()
$counter = 0
foreach($vmAdapter in $VMOnPDAdapter)
{
if ($VMNetwork[$counter] -eq $null)
{
Write-Host -ForegroundColor Yellow (Get-Date) ".....Network Adapter '" $counter "' not connected"
$IP = $IP + $null
$counter = $counter + 1
continue
}
## Revoke IP
$error.Clear()
$IP = $IP +(Get-SCIPAddress –GrantToObjectId $VMOnPD.VirtualNetworkAdapters[$counter].ID)
Write-Host -ForegroundColor Yellow (Get-Date) "....Revoking IP " $IP[$counter] "from Primary VM"
Revoke-SCIPAddress $IP[$counter]
if ($error.count -eq 0)
{
Write-Host -ForegroundColor Green (Get-Date) "....." $IP[$counter] "revoke completed"
}
## Disconnect Primary VM
Write-Host -ForegroundColor Yellow (Get-Date) "....Disconnecting Primary VM from Network " $VMNetwork[$counter]
Set-SCVirtualNetworkAdapter -VirtualNetworkAdapter $VMOnPD.VirtualNetworkAdapters[$counter] -NoLogicalNetwork -NoConnection -NoPortClassification
Write-Host -ForegroundColor Green (Get-Date) "....Network Adapter '" $counter "' of Primary VM Disconnected"
$counter = $counter + 1
}
## Start failover
Write-Host -ForegroundColor Yellow (Get-Date) ".....We are going to Failover " $VMName " from " $primaryHostName " to " $recoveryHostName
$error.Clear()
Start-VMFailover -ComputerName $primaryHostName -VMName $VMOnPD.Name -Prepare -Confirm:$false
start-sleep 5
Write-Host -ForegroundColor Yellow (Get-Date) ".....Completing Failover on Replica site..."
Start-VMFailover -ComputerName $recoveryHostName -VMName $VMOnDR.Name -Confirm:$false
if ($ReverseRep)
{
write-host -ForegroundColor Green (Get-Date) ".....Starting Reverse Replication..."
Set-VMReplication -ComputerName $recoveryHostName -reverse -VMName $VMOnDR.Name
}
if ($error -ne 0)
{
write-host -ForegroundColor Red (Get-Date) ".....Error occured during Planned Failover for VM $VMName"
write-host -ForegroundColor Red (Get-Date) ".....Please manually complete Failover before continuing"
Write-Host -ForegroundColor Red (Get-Date) ".....Press any key to continue..."
$ignoreKey = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
}
Write-Host -ForegroundColor Green (Get-Date) ".....Connecting Network(s) to Failed-over VM"
$counter = 0
foreach($vmAdapter in $VMOnPDAdapter)
{
if ($VMNetwork[$counter] -eq $null)
{
Write-Host -ForegroundColor Yellow (Get-Date) ".....Network Adapter '" $counter "' not connected"
$counter = $counter + 1
continue
}
Write-Host -ForegroundColor Yellow (Get-Date) "Granting " $IP[$counter] "to Failed-over VM"
Grant-SCIPAddress -GrantToObjectType "VirtualNetworkAdapter" -GrantToObjectID $VMOnDRAdapter[$counter].ID -StaticIPAddressPool $Pools[$counter] –IPAddress $IP[$counter]
Write-Host -ForegroundColor Green (Get-Date) "Granting IP completed"
Write-Host -ForegroundColor Yellow (Get-Date) "Connecting Replica VM to " $VMNetwork[$counter]
Set-SCVirtualNetworkAdapter -VirtualNetworkAdapter $VMOnDRAdapter[$counter] -IPv4AddressType static -VMNetwork $VMNetwork[$counter] -VMSubnet $VMSubnet[$counter]
Write-Host -ForegroundColor Green (Get-Date) "Network Adapter '" $counter "' of Failed-over VM connected to " $VMNetwork[$counter]
$counter = $counter + 1
}
A visszirányú replikálás futtatása és a futtatás megszakítása
A parancsfájl az alábbi műveleteket végzi el:
- Ha a feladatátvételi parancsfájl futtatásánál nem végzett visszirányú replikálást, a művelet elvégzésére az alábbi parancsfájlt is használhatja, és meg is szakíthatja vele a feladatátvételt.
- Ha megszakítja a műveletet, a szkript megfordítja a hálózati lépéseket, és visszaállítja az elsődleges virtuálisgép-kapcsolatokat a replika virtuálisgép-hálózatok leválasztása után.
A szkript futtatása
Ezt a szkriptet a feladatátvételi szkripthez kell futtatni, $ReverseRep $false értékre van állítva. Ez a szkript három argumentumot vesz fel:
- $VMName: a virtuális gép neve
- $ReverseRep: igaz/hamis érték, amely azt határozza meg, hogy történjen-e visszirányú replikálás. $true érték esetén a visszirányú replikálás megtörténik.
- $CancelFO – igaz/hamis érték, amely azt határozza meg, hogy meg kell-e szakítani a feladatátvételt. A $true érték esetén megszakítás történik az elsődleges és a helyreállítási helyen.
Egyszerre csak egy $ReverseRep és $CancelFO adható át $true. A parancsfájl sikeres futtatása után mindkét virtuális gép állapota Replikálás engedélyezve lesz.
Futtassa az alábbi parancsfájlt:
Param(
[Parameter(Mandatory=$True)]
[string]$VMName,
[Parameter(Mandatory=$true)]
[boolean]$ReverseRep,
[Parameter(Mandatory=$true)]
[boolean]$CancelFO
)
# the script running on system with SCVMM Console/PowerShell installed. Also, requires Hyper-V powershell module.
Import-Module hyper-v
if ($ReverseRep -eq $CancelFO)
{
write-host -ForegroundColor Red (Get-Date) "....Please ensure that one and only one of the parameters -ReverseRep and -CancelFO is passed as $True"
write-host -ForegroundColor Red (Get-Date) "....Exiting"
exit 1
}
## Refresh VM configuration and initialize
Write-Host -ForegroundColor Green (Get-Date) ".....Refreshing the VMs..."
Get-SCVirtualMachine -Name $VMName | Read-SCVirtualMachine
$VMOnPD = Get-SCVirtualMachine -Name $VMName | where {$_.IsPrimaryVM -eq $true}
$VMOnDR = Get-SCVirtualMachine -Name $VMName | where {$_.IsPrimaryVM -eq $false}
$error.Clear()
$VMRepConfig = Get-VMReplication -ComputerName $VMOnPD.HostName -VMName $VMOnPD.Name
$VMRepConfig = Get-VMReplication -ComputerName $VMOnDR.HostName -VMName $VMOnPD.Name
if ($error -ne 0)
{
$temp = $VMOnPD.HostName.Split(".")
$primaryHostName = $temp[0]
$temp = $VMOnDR.HostName.Split(".")
$recoveryHostName = $temp[0]
write-host -ForegroundColor Red (Get-Date) "....Error in getting VM Replication state using FQDN, switching to Hostname"
write-host -ForegroundColor Yellow (Get-Date) "....Primary Hostname: " $primaryHostName " Replica Hostname: " $recoveryHostName
$error.Clear()
$VMRepConfig = Get-VMReplication -ComputerName $primaryHostName -VMName $VMOnPD.Name
$VMRepConfig = Get-VMReplication -ComputerName $recoveryHostName -VMName $VMOnPD.Name
if ($error -ne 0)
{
write-host -ForegroundColor Red (Get-Date) "....Error in getting VM Replication state using Hostname"
write-host -ForegroundColor Red (Get-Date) "....Exiting"
exit 1
}
write-host -ForegroundColor Green (Get-Date) "....Successful in getting VM Replication state using Hostname"
}
else
{
$primaryHostName = $VMOnPD.HostName
$recoveryHostName = $VMOnDR.HostName
}
if ($VMOnDR.ReplicationStatus.ReplicationState -ne "Recovered")
{
write-host -ForegroundColor Red (Get-Date) "....Replica VM is not in Failed over state. Actual State " $VMOnDR.ReplicationStatus.ReplicationState
write-host -ForegroundColor Red (Get-Date) "....Exiting"
exit 1
}
$error.Clear()
if ($ReverseRep -eq $true)
{
write-host -ForegroundColor Green (Get-Date) ".....Starting Reverse Replication..."
Set-VMReplication -ComputerName $recoveryHostName -reverse -VMName $VMOnDR.Name
if ($error -ne 0)
{
write-host -ForegroundColor Red (Get-Date) ".....Error occured during Reverse Replication for VM $VMName"
write-host -ForegroundColor Red (Get-Date) ".....Please manually complete Reverse replication"
exit 1
}
write-host -ForegroundColor Green (Get-Date) ".....Reverse Replication completed..."
exit 0
}
if ($VMOnDR.StatusString -ne "Stopped")
{
write-host -ForegroundColor Red (Get-Date) "....VM is not in stopped state. Actual State " $VMOnDR.StatusString
write-host -ForegroundColor Red (Get-Date) "....Exiting"
exit 1
}
$VMOnPDAdapter = Get-SCVirtualNetworkAdapter -VM $VMonPD
$VMOnDRAdapter = Get-SCVirtualNetworkAdapter -VM $VMonDR
$fileName = $VMName + (Get-Date).ToString() + ".txt"
$fileName = $fileName.Replace("/","_")
$fileName = $fileName.Replace(":","_")
Write-Host -ForegroundColor Yellow (Get-Date) "....Dumping network information for $VMName to file $fileName"
Write-Host -ForegroundColor Yellow (Get-Date) "....Number of Network adapters found on Failed-over VM: " $VMOnDRAdapter.count
$VMNetwork = @()
$VMSubnet = @()
$Pools = @()
$counter = 0
foreach($vmAdapter in $VMOnDRAdapter)
{
if ($vmAdapter.VMNetwork -eq $null)
{
$VMNetwork = $VMNetwork + $null
$VMSubnet = $VMSubnet + $null
$Pools = $Pools + $null
$counter = $counter + 1
continue
}
$VMNetwork = $VMNetwork + (Get-SCVMNetwork -Name $vmAdapter.VMNetwork.Name -ID $vmAdapter.VMNetwork.ID)
$VMSubnet = $VMSubnet + (Get-SCVMSubnet -Name $vmAdapter.VMSubnet.Name | where {$_.VMNetwork.ID -eq $vmAdapter.VMNetwork.ID})
#$PortClassification = Get-SCPortClassification | where {$_.Name -eq "Guest Dynamic IP"}
$Pools = $Pools + (Get-SCStaticIPAddressPool -IPv4 | where {$_.VMsubnet.name -eq $vmAdapter.VMSubnet.Name})
Out-File -FilePath $fileName -InputObject $VMNetwork[$counter] -Append
Out-File -FilePath $fileName -InputObject $VMSubnet[$counter] -Append
Out-File -FilePath $fileName -InputObject $Pools[$counter] -Append
$counter = $counter + 1
}
if ($error.Count -ne 0)
{
write-host -ForegroundColor Red (Get-Date) "....Error is gathering information for $VMName. No changes made"
write-host -ForegroundColor Red (Get-Date) "....Exiting"
exit 1
}
$IP = @()
$counter = 0
foreach($vmAdapter in $VMOnDRAdapter)
{
if ($VMNetwork[$counter] -eq $null)
{
Write-Host -ForegroundColor Yellow (Get-Date) ".....Network Adapter '" $counter "' not connected"
$IP = $IP + $null
$counter = $counter + 1
continue
}
## Revoke IP
$error.Clear()
$IP = $IP +(Get-SCIPAddress –GrantToObjectId $VMOnDR.VirtualNetworkAdapters[$counter].ID)
Write-Host -ForegroundColor Yellow (Get-Date) "....Revoking IP " $IP[$counter] "from Replica VM"
Revoke-SCIPAddress $IP[$counter]
if ($error.count -eq 0)
{
Write-Host -ForegroundColor Green (Get-Date) "....." $IP[$counter] "revoke completed"
}
## Disconnect Replica VM
Write-Host -ForegroundColor Yellow (Get-Date) "....Disconnecting Replica VM from Network " $VMNetwork[$counter]
Set-SCVirtualNetworkAdapter -VirtualNetworkAdapter $VMOnDR.VirtualNetworkAdapters[$counter] -NoLogicalNetwork -NoConnection -NoPortClassification
Write-Host -ForegroundColor Green (Get-Date) "....Network Adapter '" $counter "' of Replica VM Disconnected"
$counter = $counter + 1
}
## Cancel failover
Write-Host -ForegroundColor Yellow (Get-Date) ".....We are going to Cancel Failover " $VMName " on both " $primaryHostName " and " $recoveryHostName
$error.Clear()
Stop-VMFailover -ComputerName $recoveryHostName -VMName $VMName
Start-Sleep -Seconds 10
Stop-VMFailover -ComputerName $primaryHostName -VMName $VMName
if ($error -ne 0)
{
write-host -ForegroundColor Red (Get-Date) ".....Error occured during Cancel Failover for VM $VMName"
write-host -ForegroundColor Red (Get-Date) ".....Please manually Cancel Failover on both Primary and Recovery Server"
Write-Host -ForegroundColor Red (Get-Date) ".....Press any key to continue..."
$ignoreKey = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
}
Write-Host -ForegroundColor Yellow (Get-Date) ".....Connecting Network(s) back to the Primary VM"
$counter = 0
foreach($vmAdapter in $VMOnDRAdapter)
{
if ($VMNetwork[$counter] -eq $null)
{
Write-Host -ForegroundColor Yellow (Get-Date) ".....Network Adapter '" $counter "' not connected"
$counter = $counter + 1
continue
}
Write-Host -ForegroundColor Yellow (Get-Date) "Granting " $IP[$counter] "to Primary VM"
Grant-SCIPAddress -GrantToObjectType "VirtualNetworkAdapter" -GrantToObjectID $VMOnPDAdapter[$counter].ID -StaticIPAddressPool $Pools[$counter] –IPAddress $IP[$counter]
Write-Host -ForegroundColor Green (Get-Date) "Granting IP completed"
Write-Host -ForegroundColor Yellow (Get-Date) "Connecting Primary VM to " $VMNetwork[$counter]
Set-SCVirtualNetworkAdapter -VirtualNetworkAdapter $VMOnPDAdapter[$counter] -IPv4AddressType static -VMNetwork $VMNetwork[$counter] -VMSubnet $VMSubnet[$counter]
Write-Host -ForegroundColor Green (Get-Date) "Network Adapter '" $counter "' of Primary VM connected to " $VMNetwork[$counter]
$counter = $counter + 1
}
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: