PowerShell創建虛擬機 (二、實現批量創建)

上一篇,我們大概瞭解到瞭如何用PowerShell腳本(以下簡稱PS或PS腳本)創建一臺虛擬機,以及自定義虛擬機相關的配置,這一篇,我們一起探討一下如何實現批量創建虛擬機。

批量創建,顧名思義,就是讓腳本運行一次,創建多臺虛擬機,最簡單的實現方法呢,就是循環,下面我們一起來看一段代碼:

for($i=1;$i -le10;$i++)
{
$i
}


這是PS腳本中最簡單的循環之一,運行之後,效果如下圖:

這個PS腳本的意思呢,是從1循環到10,一共10次,每次乾的事情呢,就是將變量$i的結果輸出到屏幕。

OK,我們再來看一段代碼:

for($i=1;$i -le10;$i++)
{
1
}


這段代碼與上面的代碼基本相似,但是大括號中的內容略有變化,先來看看運行結果:

這段代碼意思與剛纔的相同,只是輸出的結果不同而已,這段代碼是輸出了10個1。OK,肯定有人想問,不就一個循環,用得着截圖兩遍?粘貼兩段代碼?其實,我覺得這是必要的,因爲對於做運維的我們來說,編程是個門檻,我相信大部分做運維的朋友對代碼不是很熟,可能只是會一些簡單的腳本(各大神、大牛除外啊~各位大大莫笑~),所以我個人覺得呢,從最簡單的對比,更能看出差異化。

OK,上面兩個腳本雖然只有一行不同,但輸出結果的差異卻不止一處。上面兩段代碼說明了以下幾點:

  1. 通過循環可以輸出多次。(廢話?我也覺得。。。)

  2. 通過循環,輸出的結果可以是相同的,也可以是不同的。

  3. 循環內部的主體可以與循環變量結合起來,也可以獨立於循環變量。

以上幾點有什麼用呢?第一點,解決了我們主要的問題,批量創建虛擬機;還記得上篇的代碼不?加上循環以後,我們再來看看代碼:


for($i=1;$i -le10;$i++)
{
#輸入部分:
$vhdpath_new= read-host("請輸入模板路徑【包括文件名和後綴】")
$NewVMGeneration= read-host("請輸入新建虛擬機的版本號")
$NewVMMemoryStartupBytes= read-host("請輸入啓動內存")
$name= read-host("請輸入虛擬機名稱")
$NewVMSwitchName= read-host("請輸入虛擬機需要連接網絡的名稱")
$NewVMvCPU= read-host("請輸入虛擬機的虛擬CPU數量")
#創建部分:
New-VM -VHDPath $vhdpath_new -Generation $NewVMGeneration -MemoryStartupBytes $NewVMMemoryStartupBytes  -Name $name -SwitchName $NewVMSwitchName
Set-VMProcessor -VMName $name -Count $NewVMvCPU
}


其實這段代碼就是將上面第二段代碼中的循環體"1"替換成了上篇的代碼,最終實現的功能就是將上篇的腳本連續運行10次,手動輸入10次之後就可以創建10個虛擬機了!

運行之後就發現,問題來了!每次都要輸入許多重複的內容,其實我們需要的自定義配置就那麼點,比如只需要虛擬機名稱和硬盤名稱不同,其他配置都可以保持相同,那該怎麼辦呢?So Easy!把輸入部分,除了虛擬機名稱,其他部分拿出來就是了啊!


#輸入部分:
$vhdpath_new= read-host("請輸入模板路徑【包括文件名和後綴】")
$NewVMGeneration= read-host("請輸入新建虛擬機的版本號")
$NewVMMemoryStartupBytes= read-host("請輸入啓動內存")
$NewVMSwitchName= read-host("請輸入虛擬機需要連接網絡的名稱")
$NewVMvCPU= read-host("請輸入虛擬機的虛擬CPU數量")
for($i=1;$i -le10;$i++)
{
#輸入部分:
$name= read-host("請輸入虛擬機名稱")
#創建部分:
New-VM -VHDPath $vhdpath_new -Generation $NewVMGeneration -MemoryStartupBytes $NewVMMemoryStartupBytes  -Name $name -SwitchName $NewVMSwitchName
Set-VMProcessor -VMName $name -Count $NewVMvCPU
}


這下大功告成,現在我們的腳本已經能夠實現批量創建虛擬機了!到這兒,我們都的腳本核心內容大致完成,但還是用戶體驗還不是很好,下一個篇章,我們繼續探討,讓我們的腳本能夠適應不同的環境~


題外話:今天在南京,我們51cto在南京的小夥伴們在一起玩耍的挺High的,共同參與了51cto的十週年慶典,技術成就夢想,祝51cto十週年快樂!最後,附上我們一起玩耍的照片,哈哈,找找看,我在哪?

wKioL1WdZR3SowSZAAAUbhkpM-8754.jpg

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