Home > Windows にまつわる e.t.c.

PowerShell 3.0 で作る Hyper-V 仮想マシンと基本設定


Windows Server 2012 / Windows 8 の Power Shell 3.0 は、大幅に進化しており netsh とか、WMI を使わず、大半を PowerShell のコマンドレットで仮想マシンの作成や、仮想マシンそのもの設定が可能です。

Sysprep してあるベース VHDX から、差分ディスクで Windows Server 2012 の仮想マシンを作成し、IPv4 / IPv6、コンピューター名の設定、ライセンス登録、ドメイン参加をするシナリオで、これらを解説しましょう。

< 例で使用する環境 >

● ベースとなる VHDX(sysprep済み)

F:\Hyper-V\VHD\BaseWS12.VHDX

● 仮想マシン名

TestVM01

● 作成する仮想マシン置き場

F:\Hyper-V\TestVM01\

TestVM01.VHDX

● 使用する仮想SW

LAN

 

まずは、仮想マシンの作成です。

仮想マシン作成テンプレート

# 仮想マシン置き場作成
md [仮想マシン置き場]

# 差分ディスク作成
New-VHD -ParentPath [ベースとなる VHDX] -Path [作成する差分ディスク] -Differencing

# 仮想マシン作成
New-VM -Name [仮想マシン名] -Path [仮想マシン置き場] -VHDPath [VHDXの場所] -SwitchName [仮想SW名]

# ダイナミックメモリ有効
Set-VMMemory [仮想マシン名] -DynamicMemoryEnabled $true

# 仮想CPU割り当て
Set-VMProcessor [仮想マシン名] -Count [仮想CPU数]

# 仮想マシン起動
Start-VM -Name [仮想マシン名]

 

仮想マシン作成例(要管理権限)

# 仮想マシン置き場作成
md F:\Hyper-V\TestVM01

# 差分ディスク作成
New-VHD -ParentPath F:\Hyper-V\VHD\BaseWS12.VHDX -Path F:\Hyper-V\TestVM01\TestVM01.VHDX -Differencing

# 仮想マシン作成
New-VM -Name TestVM01 -Path F:\Hyper-V\TestVM01 -VHDPath F:\Hyper-V\TestVM01\TestVM01.VHDX -SwitchName LAN

# ダイナミックメモリ有効
Set-VMMemory TestVM01 -DynamicMemoryEnabled $true

# 仮想CPU割り当て
Set-VMProcessor TestVM01 -Count 2

# 仮想マシン起動
Start-VM -Name TestVM01

 

仮想マシンが起動したら、仮想マシンのセットアップをします。

自動応答を仕込んでいない場合は、仮想マシンの GUI 入力が必要なので、「vmconnect」で仮想マシンの GUI に接続し、必要な入力をします。

 

続いて、仮想マシンの Power Shell で、IPアドレスとコンピューター名の設定します。

 

仮想マシンのIPアドレス、コンピューター名設定テンプレート
# RA による IPv6 アドレス自動構成停止
Set-NetIPInterface -RouterDiscovery Disabled

# IPv6 アドレス設定(/64)
Get-NetAdapter | New-NetIPAddress -AddressFamily IPv6 -IPAddress [IPv6 GUA アドレス] -PrefixLength 64
Get-NetAdapter | New-NetIPAddress -AddressFamily IPv6 -IPAddress [IPv6 ULA アドレス] -PrefixLength 64

# IPv6 デフォルトゲートウェイ(fe80::1)設定
Get-NetAdapter | New-NetRoute -AddressFamily IPv6 -DestinationPrefix ::/0 -NextHop fe80::1

# IPv6 参照 DNS 設定
Get-NetAdapter | Set-DnsClientServerAddress -ServerAddresses [参照DNS-1],[参照DNS-2],[参照DNS-3],[参照DNS-4]

# IPv4 アドレス(/24)/デフォルトゲートウェイ設定
Get-NetAdapter | New-NetIPAddress -AddressFamily IPv4 -IPAddress [IPv4 アドレス] -PrefixLength 24 -DefaultGateway [デフォルトゲートウェイ]

# IPv4 参照 DNS 設定
Get-NetAdapter | Set-DnsClientServerAddress -ServerAddresses [参照DNS-1],[参照DNS-2]

# コンピューター名設定
Rename-Computer [コンピューター名] -Restart -Force

 

仮想マシンのIPアドレス、コンピューター名設定例(要管理権限)
# RA による IPv6 アドレス自動構成停止
Set-NetIPInterface -RouterDiscovery Disabled

# IPv6 アドレス設定(/64)
Get-NetAdapter | New-NetIPAddress -AddressFamily IPv6 -IPAddress 2001:db8:400::d01 -PrefixLength 64
Get-NetAdapter | New-NetIPAddress -AddressFamily IPv6 -IPAddress fd43:6338:75ac::d01 -PrefixLength 64

# IPv6 デフォルトゲートウェイ(fe80::1)設定
Get-NetAdapter | New-NetRoute -AddressFamily IPv6 -DestinationPrefix ::/0 -NextHop fe80::1

# IPv6 参照 DNS 設定
Get-NetAdapter | Set-DnsClientServerAddress -ServerAddresses fd43:6338:75ac::ad01,fd43:6338:75ac::ad02,2001:db8:400::ad01,2001:db8:400::ad02

# IPv4 アドレス(/24)/デフォルトゲートウェイ設定
Get-NetAdapter | New-NetIPAddress -AddressFamily IPv4 -IPAddress 192.168.0.10 -PrefixLength 24 -DefaultGateway 192.168.0.254

# IPv4 参照 DNS 設定
Get-NetAdapter | Set-DnsClientServerAddress -ServerAddresses 192.168.0.1,192.168.0.2

# コンピューター名設定
Rename-Computer DHCP01 -Restart -Force

 

仕上げは、プロダクト ID のアクティベーションと、ドメイン参加です。

ドメイン参加は、対話認証となるため、スクリプトで完全自動化にはならない様です。

 

ライセンス登録とドメイン参加設定テンプレート
# ライセンス登録
slmgr /ipk [PID]

# ドメイン参加
Add-Computer -DomainName [ドメイン名] -Force -Restart

 

ライセンス登録とドメイン参加設定例(要管理権限)
# ライセンス登録
slmgr /ipk xxxxx-xxxxx-xxxxx-xxxxx

# ドメイン参加
Add-Computer -DomainName contoso.com -Force -Restart

 

 

Windows Update 等の設定は、コマンドラインだと難しいので、「sconfig」で対話的に設定するのが無難でしょう。

 

仮想マシン作成、仮想マシンのIPアドレス、コンピューター名設定は、PowerShellのスクリプト(.PS1)に書いて実行するのが効率的です。

スクリプトの実行は、デフォルト禁止になっているので、管理者権限で PowerShell を起動し、「Set-ExecutionPolicy RemoteSigned -Force」で実行許可を与える必要があります。

 

PowerShell スクリプト実行許可(要管理権限)
# スクリプト実行許可
Set-ExecutionPolicy RemoteSigned -Force

 

仮想マシン用の PowerShell スクリプトは、スクリプトを格納した VHDX を準備し、仮想マシンの SCSI デバイスにマウントするのがお勧めです。

 

VHDXのSCSIマウント
Add-VMHardDiskDrive -VMName [仮想マシン名] -ControllerType SCSI -Path [VHDXの場所]

 

参考までに、NIC に VID をセットする場合は、「Set-VMNetworkAdapterVlan –VMName [仮想マシン名] –Access –VlanId [VID]」でセットします。

 

 

back.gif (1980 バイト)

home.gif (1907 バイト)

Copyright © MURA All rights reserved.