我正在尝试创建一个 PowerShell 脚本(如果有的话,是为了学习目的),以便使用新的 NanoServer 从头开始设置虚拟 Hyper-V 集群。它仍处于早期阶段,我也在学习 PowerShell。我正在运行 Windows 10 Pro。
在调试时,如果 Hyper-V 交换机已经存在,我想避免创建它们。
这是我目前拥有的:
$ethernet = Get-NetAdapter -Name ethernet
$wifi = Get-NetAdapter -Name wi-fi
New-VMSwitch -Name externalSwitch -NetAdapterName $ethernet.Name -AllowManagementOS $true -Notes 'Parent OS, VMs, LAN'
New-VMSwitch -Name WiFiExternalSwitch -NetAdapterName $wifi.Name -AllowManagementOS $true -Notes 'Parent OS, VMs, wifi'
New-VMSwitch -Name privateSwitch -SwitchType Private -Notes 'Internal VMs only'
New-VMSwitch -Name internalSwitch -SwitchType Internal -Notes 'Parent OS, and internal VMs'
外部交换机不会再次创建,因为这是不可能的,所以会出现错误,但如果我再次运行 New-VMSwitch 命令,我会得到相同的私有和内部交换机的重复。
我已经搜索并尝试了几种从互联网上改编的 foreach 和/或 if 构造,但迄今为止没有成功或没有得到预期的结果。
非常感谢您的帮助!
答案1
像这样的事情应该可以满足您的需要:
If ( ! ( Get-VMSwitch | Where {$_.Name -eq "MySwitchName"} ) ) {
New-VMSwitch -Name MySwitchName #-otherswitcheshere
}
希望这能有所帮助。
本