From cdf2097a61de78f32fddb17d42bd8e8acb558ddc Mon Sep 17 00:00:00 2001 From: Spencer Walden Date: Tue, 5 Jan 2021 16:29:55 -0800 Subject: [PATCH] Updates else clause logged output and uses variables in script rather than hard code --- HyperV/hyperv-create-nat-switch.ps1 | 49 +++++++++++++++++------------ 1 file changed, 29 insertions(+), 20 deletions(-) diff --git a/HyperV/hyperv-create-nat-switch.ps1 b/HyperV/hyperv-create-nat-switch.ps1 index 94650da..bd6c0fa 100644 --- a/HyperV/hyperv-create-nat-switch.ps1 +++ b/HyperV/hyperv-create-nat-switch.ps1 @@ -1,32 +1,41 @@ # See: https://www.petri.com/using-nat-virtual-switch-hyper-v -If ("NATSwitch" -in (Get-VMSwitch | Select-Object -ExpandProperty Name) -eq $FALSE) { - 'Creating Internal-only switch named "NATSwitch" on Windows Hyper-V host...' +$NATHostIP = "192.168.38.1" +$NATNetPrefixLength = 24 +$NATNet = "192.168.38.0/$NATNetPrefixLength" +$NATNetName = "NATNetwork" +$NATSwitchName = "NATSwitch" +$NATSwitchNameAlias = "vEthernet ($NATSwitchName)" - New-VMSwitch -SwitchName "NATSwitch" -SwitchType Internal +# Check our NAT switch exists, create it and configure it if it doesn't. +If ("$NATSwitchName" -in (Get-VMSwitch | Select-Object -ExpandProperty Name) -eq $FALSE) { + "Creating Internal-only switch named ""$NatSwitchName"" on Windows Hyper-V host..." - New-NetIPAddress -IPAddress 192.168.38.1 -PrefixLength 24 -InterfaceAlias "vEthernet (NATSwitch)" + New-VMSwitch -SwitchName $NATSwitchName -SwitchType Internal + New-NetIPAddress -IPAddress $NATHostIP -PrefixLength $NATNetPrefixLength -InterfaceAlias $NATSwitchNameAlias + New-NetNAT -Name $NATNetName -InternalIPInterfaceAddressPrefix $NATNet - New-NetNAT -Name "NATNetwork" -InternalIPInterfaceAddressPrefix 192.168.38.0/24 -} -else { - '"NATSwitch" for static IP configuration already exists; skipping' +} else { + """$NATSwitchName"" VM Switch on Hyper-V host for guest static IP configuration already exists; skipping..." } -If ("192.168.38.1" -in (Get-NetIPAddress | Select-Object -ExpandProperty IPAddress) -eq $FALSE) { - 'Registering new IP address 192.168.38.1 on Windows Hyper-V host...' +# Check that our Hyper-V host has the proper gateway address for the NAT Network. +# TODO make sure that this is set for the proper NATSwitch +If ("$NATHostIP" -in (Get-NetIPAddress | Select-Object -ExpandProperty IPAddress) -eq $FALSE) { + "Registering new IP address $NATHostIP on Windows Hyper-V host..." - New-NetIPAddress -IPAddress 192.168.38.1 -PrefixLength 24 -InterfaceAlias "vEthernet (NATSwitch)" -} -else { - '"192.168.38.1" for static IP configuration already registered; skipping' + New-NetIPAddress -IPAddress $NATHostIP -PrefixLength $NATNetPrefixLength -InterfaceAlias $NATSwitchNameAlias + +} else { + """$NATHostIP"" Hyper-V host gateway address for guest static IP configuration already registered; skipping..." } -If ("192.168.38.0/24" -in (Get-NetNAT | Select-Object -ExpandProperty InternalIPInterfaceAddressPrefix) -eq $FALSE) { - 'Registering new NAT adapter for 192.168.38.0/24 on Windows Hyper-V host...' +# Check that our Hyper-V host has the proper NAT Network setup +If ("$NATNet" -in (Get-NetNAT | Select-Object -ExpandProperty InternalIPInterfaceAddressPrefix) -eq $FALSE) { + "Registering new NAT adapter for $NATNet on Windows Hyper-V host..." - New-NetNAT -Name "NATNetwork" -InternalIPInterfaceAddressPrefix 192.168.38.0/24 -} -else { - '"192.168.38.0/24" for static IP configuration already registered; skipping' + New-NetNAT -Name $NATNetName -InternalIPInterfaceAddressPrefix $NATNet + +} else { + """$NATNet"" Hyper-V host NAT Network for guest static IP configuration already registered; skipping" } \ No newline at end of file