PowerShell script exchange
Post Reply
mboswell
Service Provider
Posts: 43
Liked: 3 times
Joined: Jul 21, 2022 10:40 pm
Full Name: Matthew Boswell
Contact:

Question about Start-VBRRestoreVM and multiple NICs

Post by mboswell »

Hi,

I'm restoring VMware restore points to new locations with different networking config and am wondering how to handle multiple NICs on the source VM. Right now I can specify -SourceNetwork $restorepoint.Auxdata.Nics[0].Network to just connect the first one (if there's more than one) but I'd like to be able to handle the case where there's more than one element in $restorepoint.Auxdata.Nics. In the case of more than one NIC on the source I intend to connect them all to the same port group, so TargetNetwork will always be the same.
oleg.feoktistov
Veeam Software
Posts: 2011
Liked: 670 times
Joined: Sep 25, 2019 10:32 am
Full Name: Oleg Feoktistov
Contact:

Re: Question about Start-VBRRestoreVM and multiple NICs

Post by oleg.feoktistov »

Hi Matthew,

What if you loop through the networks, add each of them to a new array and pass it to SourceNetwork parameter?
It accepts arrays, so should work in your case. And then for TargetNetwork you just specify the port group you want to connect restored vms to.

Thanks,
Oleg
mboswell
Service Provider
Posts: 43
Liked: 3 times
Joined: Jul 21, 2022 10:40 pm
Full Name: Matthew Boswell
Contact:

Re: Question about Start-VBRRestoreVM and multiple NICs

Post by mboswell »

When the restore point has multiple NICs the object is already an array:

Code: Select all

PS C:\Windows\system32> $restorepoint.AuxData.Nics.Network.GetType()

IsPublic IsSerial Name                                     BaseType                                                                          
-------- -------- ----                                     --------                                                                          
True     True     Object[]                                 System.Array 
I've tried passing $restorepoint.AuxData.Nics.Network as-is but get an Index error unless I select one specific element of the array as the argument.

Code: Select all

Start-VBRRestoreVM : Index was outside the bounds of the array.
I can either select one NIC like $restorepoint.AuxData.Nics[0].Network or select one network like $restorepoint.AuxData.Nics.Network[0]. Doesn't seem to matter.
oleg.feoktistov
Veeam Software
Posts: 2011
Liked: 670 times
Joined: Sep 25, 2019 10:32 am
Full Name: Oleg Feoktistov
Contact:

Re: Question about Start-VBRRestoreVM and multiple NICs

Post by oleg.feoktistov »

At first I thought it's because an array of networks inside of a restore point is being presented as an array of a generic type (Object[]). And SourceNetwork & TargetNetwork don't seem to accept that. But it didn't work even with array conversion to VBRViNetworkInfo[].
Looks like a bug to me. I'll bring it up with QA and follow up here as soon as I have any updates.
Thanks!
mboswell
Service Provider
Posts: 43
Liked: 3 times
Joined: Jul 21, 2022 10:40 pm
Full Name: Matthew Boswell
Contact:

Re: Question about Start-VBRRestoreVM and multiple NICs

Post by mboswell »

I got it to work with an array. What I did was create a for loop to populate an array for -TargetNetwork that is the same length as the -SourceNetwork array.

It appears to map them by index.

Code: Select all

if ($restorepoint.AuxData.Nics.Length -gt 1)
{
    $targetnetwork = @()
    for ($i = 0; $i -lt $newest.AuxData.Nics.Length; $i++)
    {
        $targetnetwork += Get-VBRViServerNetworkInfo -Server $desthost | Where-Object NetworkName -eq "MyNetwork"
    }
}
else
{
    $targetnetwork = Get-VBRViServerNetworkInfo -Server $desthost | Where-Object NetworkName -eq "MyNetwork
}
mboswell
Service Provider
Posts: 43
Liked: 3 times
Joined: Jul 21, 2022 10:40 pm
Full Name: Matthew Boswell
Contact:

Re: Question about Start-VBRRestoreVM and multiple NICs

Post by mboswell »

For some reason I can't edit the above post but I meant to clean up the var names so they are a bit more readable.... Line 4 should be

Code: Select all

for ($i = 0; $i -lt $restorepoint.AuxData.Nics.Length; $i++)
oleg.feoktistov
Veeam Software
Posts: 2011
Liked: 670 times
Joined: Sep 25, 2019 10:32 am
Full Name: Oleg Feoktistov
Contact:

Re: Question about Start-VBRRestoreVM and multiple NICs

Post by oleg.feoktistov »

Hi Matthew,

Thanks for sharing. Just to clarify - did you pass an array of the same target networks to TargetNetwork parameter to match the array length of SourceNetwork? And it worked?

Best regards,
Oleg
mboswell
Service Provider
Posts: 43
Liked: 3 times
Joined: Jul 21, 2022 10:40 pm
Full Name: Matthew Boswell
Contact:

Re: Question about Start-VBRRestoreVM and multiple NICs

Post by mboswell »

did you pass an array of the same target networks to TargetNetwork parameter to match the array length of SourceNetwork? And it worked?
That's exactly what I did and it worked.

Thanks,

Matt
oleg.feoktistov
Veeam Software
Posts: 2011
Liked: 670 times
Joined: Sep 25, 2019 10:32 am
Full Name: Oleg Feoktistov
Contact:

Re: Question about Start-VBRRestoreVM and multiple NICs

Post by oleg.feoktistov »

It appears to map them by index.
Checked the code, that's exactly what is happening. Then passing source & target network arrays of the same length even if some target networks are duplicated makes sense.

Thanks!
Post Reply

Who is online

Users browsing this forum: No registered users and 8 guests