批量導入Hyper-V虛擬機時自動創建虛擬網卡關聯虛擬交換機

    每次拿到用於實驗活動的虛擬機時,都會配套拿到一份電子文檔,裏面寫明瞭用於實驗環境導入時預先創建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
       }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章