私は普段からゲスト OS をインストールしない空の仮想マシンを複数作成して
vSphere HA/各種 vMotion/スナップショット等の様々な検証を頻繁に行なって
います。
都度 1台ずつ作成するのも面倒なので今回は空の仮想マシンを一気に複数台作成
可能な PowerCLI スクリプトをメモとして記載します。
空の仮想マシンを一気に作成する PowerCLI スクリプト
サンプル1
以下は CPU 1コア、 メモリ 1GB、ディスク容量 1GB の仮想マシン “test01 ~ test10”
を作成する PowerCLI スクリプトになります。
# vSphere サーバーへの接続
$vcenterServer = "192.168.23.20"
$vcUsername = "administrator@vsphere.local"
$vcPassword = "VMware1!"
Connect-VIServer -Server $vcenterServer -User $vcUsername -Password $vcPassword -force
# 仮想マシンを作成するホスト
$vmHost = Get-VMHost -Name "192.168.23.27"
# 仮想マシンを配置するデータストア
$datastore = Get-Datastore -Name "Datastore"
# 仮想マシンを接続するネットワーク
$network = Get-VirtualPortGroup -Name "VM Network" -VMHost $vmHost
# 作成する仮想マシンの数
$numberOfVMs = 10
# 仮想マシンの名前のプレフィックス
$vmNamePrefix = "test"
# 仮想マシンの構成
$vmCpuCount = 1
$vmMemoryGB = 1
$vmDiskSizeGB = 1
# 仮想マシンを作成
for ($i = 1; $i -le $numberOfVMs; $i++) {
    $vmName = "{0}{1:D2}" -f $vmNamePrefix, $i
    
    # 新しい仮想マシンの作成
    $vm = New-VM -Name $vmName -VMHost $vmHost -Datastore $datastore -NumCpu $vmCpuCount -MemoryGB $vmMemoryGB -DiskGB $vmDiskSizeGB -DiskStorageFormat Thin -NetworkName $network.Name -ErrorAction Stop
    
    # SCSI コントローラーの設定 (PVSCSI)
    $scsiController = Get-ScsiController -VM $vm
    Set-ScsiController -ScsiController $scsiController -Type ParaVirtual -BusSharing NoSharing -confirm:$false -ErrorAction Stop
    # ネットワークアダプタの設定 (vmxnet3)
    $networkAdapter = Get-NetworkAdapter -VM $vm
    Set-NetworkAdapter -NetworkAdapter $networkAdapter -Type vmxnet3 -confirm:$false -ErrorAction Stop 
    Write-Host "仮想マシン '$vmName' を作成し、構成を完了しました。"
}
# vSphere サーバーから切断
Disconnect-VIServer -Server $vcenterServer -Confirm:$false実際に作成された仮想マシンは以下となります。

サンプル2
Connect-VIServer -Server 192.168.19.200 -User "administrator@vsphere.local" -Password "VMware1!" -f
$folder       = Get-Folder -Name "TestVM"
$resourcePool = Get-ResourcePool -Name "Resources" -Location (Get-Cluster -Name "Cluster")
$datastore    = "NFS"
$network      = "VM Network"
# VM1 ~ VM300 を一括作成
for($i = 1; $i -le 300; $i++) {
    $vmName = "VM$($i)"
    Write-Host "Creating VM: $vmName"
    New-VM -Name $vmName -Location $folder -ResourcePool $resourcePool `
           -GuestId "windows2019srv_64Guest" -NumCPU 1 -MemoryMB 100 `
           -Datastore $datastore -DiskMB 100 -DiskStorageFormat Thin `
           -NetworkName $network
}


