每次拿到用於實驗活動的虛擬機時,都會配套拿到一份電子文檔,裏面寫明瞭用於實驗環境導入時預先創建Hyper-V虛擬機所需的虛擬網絡設置;有些實驗類型的虛擬機網絡非常繁雜,單獨創建太過繁瑣,可是不創建虛擬機又無法正常導入Hyper-V的環境,所以作爲懶人中的戰鬥懶,就順手寫了一個腳本,大致就是拿到拿到待導入的虛擬機路徑,查找虛擬機配置文件,考慮到多個虛擬網絡會有重疊,因此將每個獨立虛擬機網路的位置保留下來;最後將這些虛擬機網絡與當前環境下的虛擬機網絡進行匹配,如果沒有則導入。
這裏的懶人實在是懶,因此其實對於試驗用的虛擬機只需要導入Private內部類型就足夠了,我們的實驗室虛擬機環境並沒有提供外網連接;如果真要再區分內外網,那要考慮的因素就會多很多了!
寫Shell也不是非常擅長的,不敢說慎用至少也就說僅供參考和測試使用吧!
$VMNetconfig= @() $CurrentSwitches= (Get-VMSwitch).name $VMpath="待導入的虛擬機路徑" $VMconfigfiles= (Get-ChildItem-Recurse$VMPath\*.XML|Where-Object {$_.BaseName -match"^[\da-zA-Z]{8}-[\da-zA-Z]{4}-[\da-zA-Z]{4}-[\da-zA-Z]{4}-[\da-zA-Z]{12}$"}) $VMconfigfiles|ForEach { [xml]$VMconfig =Get-Content$_ $VMNetconfig+=Select-Xml-Xml$VMconfig-XPath"//AltSwitchName"|% {$_.Node.'#text'} } [System.Collections.Generic.HashSet[string]]$UniqueNetconfig =$VMNetconfig.split("") foreach ($UniqueNetin$UniqueNetconfig) { if ($CurrentSwitches-notcontains"$UniqueNet") { New-VMSwitch-SwitchTypePrivate-Name$UniqueNet-Verbose } }