【PowerShell】DHCP サーバーを構成する
この投稿は PowerShell Advent Calendar 2013 に参加しています。
※投稿遅れてごめんなさい!!!!
https://technet.microsoft.com/ja-jp/windowsserver/jj649374.aspx
Windows PowerShell を使用すれば、Windows Server 上にインストールするサービスの構成も自動化することができます。
ただ、その中でちょっと面倒なのが DHCP サーバーです。
サーバーマネージャーで DHCPサーバーをインストールし、DHCPマネージャーで構成するには、以下の手順が必要です。
DHCP サーバーをインストールする
サーバーマネージャー上にフラグた立つので、「DHCP 構成を完了する」を実行
- DHCP サーバー管理の委任用にセキュリティグループ(DHCP Administrators、DHCP Users)を作成する
- DHCP サーバーをActive Directory で承認する
DHCP サービスのバインディングを設定する
スコープを構成する
これらをWindows PowerShell に置き換えると以下のようになります。
Add-WindowsFeature dhcp -IncludeManagementTools -IncludeAllSubFeature
「DHCP 構成を完了する」というコマンドレットが用意されていないので、以下のコマンドを実行します。
Netsh dhcp add SecurityGroups
残念ながら、Netsh dhcp add SecurityGroup に相当するコマンドレットが存在せず、ここだけはDOSコマンドを使うことになります(少し悔しい)。または、New-ADGroup コマンドレットを使用して、ここにセキュリティグループを作ってあげるという手もありますが….
Add-DHCPServerInDC -DnsName <DNSドメイン名>
DNS ドメイン名には contoso.com のような文字列を指定します。
Set-DHCPServerV4Binding -InterfaceAlias “NIC の名前” -BindingState $True
-InterfaceName に指定するのは DHCP サーバーをバインドするネットワークカードの名前です。名前を調べるには、Get-NetAdapter コマンドレットで表示される Name プロパティを確認してください。
このコマンドレットでは IPv4 アドレスをリースするための設定をしていますが、Set-DhcpServerv6Binding コマンドレットを使用すれば IPv6 用の設定も行えます。
スコープを構成するには 2つのコマンドレットを実行しなければなりません
はじめに、スコープのレンジを設定します。このとき、-State でスコープをアクティブにすることができますが、このままでは設定が足りないため中途半端にリースされる可能性があります。よって、作成時には -State を InActive としましょう。
Add-DHCPServerV4Scope -StartRange 192.168.0.10 -EndRange 192.168.0.20 -SubnetMask 255.255.255.0 -Name “スコープ1” -State InActive
スコープを作成すると、ScopeID という一意のIDが割り振られます。ScopeID を確認するには、以下のコマンドレットを使用します。
Get-DHCPServerV4Scope
ScopeID がわかったら、今度はスコープに DNS サーバー の設定を追加します。
Set-DhcpServerV4OptionValue -ScopeID 192.168.0.0 -DnsServer 192.168.0.1
このとき、DNS サーバーの有効性がチェックされます。もし DNS サーバーがまだ存在していない場合等には、 -Force オプションを使用して設定を強制することもできます。
最後に、以下のようにスコープの State を Active に変更し、アドレスのリースを行えるようにします。
Set-DhcpServerv4Scope -ScopeID 192.168.0.0 -State Active
以上で設定は完了なのですが、Windows PowerShell から構成を行った場合、ちょっとした問題が出ることがあります。それが、以下です。
そうなのです。こいつが消えてくれないことがあるのです。害はありませんが、ちょっと鬱陶しいですね。。。
そこで、対応が完了しているフラグがどうしても消えない場合には、以下のようなコマンドを最後に実行しましょう。
Set-ItemProperty –Path registry::HKLM\SOFTWARE\Microsoft\ServerManager\Roles\12 –Name ConfigurationState –Value 2
「HKLM\SOFTWARE\Microsoft\ServerManager\Roles」配下には、サーバーにインストールされている役割が列挙されており、その直下の数字が各役割の管理番号になっているようです。つまり、「12」というのはDHCP サーバーを示しています。ConfigurationState = 2 が「構成完了」を意味しています。