天天看點

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

    每次拿到用于實驗活動的虛拟機時,都會配套拿到一份電子文檔,裡面寫明了用于實驗環境導入時預先建立Hyper-V虛拟機所需的虛拟網絡設定;有些實驗類型的虛拟機網絡非常繁雜,單獨建立太過繁瑣,可是不建立虛拟機又無法正常導入Hyper-V的環境,是以作為懶人中的戰鬥懶,就順手寫了一個腳本,大緻就是拿到拿到待導入的虛拟機路徑,查找虛拟機配置檔案,考慮到多個虛拟網絡會有重疊,是以将每個獨立虛拟機網路的位置保留下來;最後将這些虛拟機網絡與目前環境下的虛拟機網絡進行比對,如果沒有則導入。

    這裡的懶人實在是懶,是以其實對于試驗用的虛拟機隻需要導入Private内部類型就足夠了,我們的實驗室虛拟機環境并沒有提供外網連接配接;如果真要再區分内外網,那要考慮的因素就會多很多了!

寫Shell也不是非常擅長的,不敢說慎用至少也就說僅供參考和測試使用吧!

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

<code>$VMNetconfig</code><code>= @()</code>

<code>$CurrentSwitches</code><code>= (</code><code>Get-VMSwitch</code><code>).name</code>

<code>$VMpath</code><code>=</code><code>"待導入的虛拟機路徑"</code>

<code>$VMconfigfiles</code><code>= (</code><code>Get-ChildItem</code><code>-Recurse</code><code>$VMPath</code><code>\*.XML</code><code>|Where</code><code>-Object {</code><code>$_</code><code>.BaseName </code><code>-match</code><code>"^[\da-zA-Z]{8}-[\da-zA-Z]{4}-[\da-zA-Z]{4}-[\da-zA-Z]{4}-[\da-zA-Z]{12}$"</code><code>})</code>

<code>$VMconfigfiles</code><code>|ForEach</code> <code>{</code>

<code>[xml]</code><code>$VMconfig</code> <code>=</code><code>Get-Content</code><code>$_</code>

<code>$VMNetconfig</code><code>+=</code><code>Select-Xml</code><code>-Xml</code><code>$VMconfig</code><code>-XPath</code><code>"//AltSwitchName"</code><code>|% {</code><code>$_</code><code>.Node.</code><code>'#text'</code><code>}</code>

<code>}</code>

<code>[System.Collections.Generic.HashSet[string]]</code><code>$UniqueNetconfig</code> <code>=</code><code>$VMNetconfig</code><code>.split("</code><code>")</code>

<code>foreach ($UniqueNetin$UniqueNetconfig)</code>

<code>{</code>

<code>if ($CurrentSwitches-notcontains"</code><code>$UniqueNet</code><code>")</code>

<code>       </code><code>{</code>

<code>New-VMSwitch</code><code>-SwitchTypePrivate-Name</code><code>$UniqueNet</code><code>-Verbose</code>

<code>       </code><code>}</code>

本文轉自 翟老貓 51CTO部落格,原文連結:http://blog.51cto.com/3387405/1586496,如需轉載請自行聯系原作者