寫了一個 Script(.ps1)去建立&設定VM
Import-Module hyperv
$newvm = "JJ_VM1-3"
$vhdpath="C:\Users\Public\Documents\Hyper-V\Virtual hard disks\jj1-3.vhd"
$cpu=2
$memsize=1024
$memlimit=2048
$vmVirtualSwitch="Test2"
New-VM $newvm
Add-VMDisk -VM $newvm -Path $vhdpath 0 0
Set-VMCPUCount -VM $newvm -CPUCount $cpu
Set-VMMemory -VM $newvm -Memory $memsize
Add-VMNic -VM $newvm -VirtualSwitch $vmVirtualSwitch
就可以成功的建立VM了
但是要再次執行時就發生了問題....
就會出現下面的錯誤訊息
Get-WmiObject : Invalid class
想說奇怪剛剛不是好好的嗎??
同樣的程式卻不能執行兩次...
重複試了很多次,還是出現相同的錯誤
最後關掉了PowerShell的視窗,重新開一個
執行Script,又成功建立VM了
但是當我要在執行第二次的時候又出現了相同的錯誤...
重複試了幾次只要是開視窗的第一次執行
都可以成功,後面就都會出現錯誤訊息了
仔細看了一下錯誤的訊息,好像是找不到模組
可是我的Script 的第一行不就 Import-Module
如果沒有Import 第一次也不會成功阿....
找很久之後終於找到了答案
原來是模組多次 Import造成這樣的問題....
以為頂多是 On 跟 Off 狀態而已
但是看看錯誤訊息跟上一篇沒有 Import模組的不一樣
一旦重複 Import之後就回不去了....只能重開視窗了
那有什麼方法可以避免重複 Import呢??
if(!(get-module hyperv))
{
import-module hyperv
}
其實只要改成要Import前,先判斷模組是否已經存在了如果沒有的話再Import,這樣就沒問題了
參考資料:
http://pshyperv.codeplex.com/discussions/230371