Nano Serverは軽量で便利な一方、画面操作がほぼできず「cmdはどこ?DNSは?bcdbootって何?」で迷いがちです。ここでは“リモート前提”という考え方を軸に、基本操作からネットワーク設定、ドライバーの捉え方、起動修復の要点までを実務目線でまとめます。
Nano Serverで迷う理由は「GUIが無い」より「ローカルで完結しない」こと
Nano Serverは、一般的なWindows Server(GUIあり)やServer Core(最低限のGUI・ローカル操作あり)と比べて、ローカルでできることを極限まで減らし、遠隔管理で運用する思想が強いOSです。ここを最初に腹落ちさせると、以降の疑問(cmd、DNS、ドライバー、bcdboot)が一気に整理できます。
現場での整理としては、次のように捉えるのが分かりやすいです。
| 項目 | GUI版 Windows Server | Server Core | Nano Server |
|---|---|---|---|
| 基本操作の前提 | ローカルでも遠隔でもOK | ローカル(SConfigなど)+遠隔 | 遠隔(リモート管理)が前提 |
| cmd/PowerShellの扱い | ローカルで普通に起動 | ローカルで起動可能 | ローカルでの起動を期待しない(遠隔で実行) |
| ネットワーク設定 | GUIが中心 | SConfig/PowerShell中心 | PowerShell中心(必要に応じてローカルの回復コンソール) |
| 用途のイメージ | 汎用サーバー | 汎用サーバー(軽量) | 役割を絞った軽量サーバー(自動化・遠隔運用向き) |
「SConfigを抜けるとcmdが出る」という話は、Server Coreの操作感と混同していることが多いです。Nano Serverでは “ローカルで何かを起動して作業する” という期待値を下げ、別PCからPowerShellで入る設計に切り替えるのが近道です。
cmdをどうやって開くのか
結論:Nano Serverはローカルでcmdを開く前提ではなく、リモートから操作する
Nano Server運用での「cmdを開く」は、実務的には次の2パターンに集約されます。
- 管理端末(別PC)からPowerShell Remotingで接続して、必要に応じてcmd相当の処理を実行する
- リモート接続が切れたときなどに、ローカルの回復用コンソール(Recovery Console)で最低限の復旧を行う
管理端末からPowerShell Remotingで入る(基本形)
遠隔管理の基本はPowerShell Remoting(WinRM)です。管理端末側から、次のような流れで接続します(ドメイン参加やFW設定など、環境により前提は変わります)。
1) 接続できるか軽く確認
Test-WsMan -ComputerName <NanoServerのIPまたはホスト名>
2) 1台に対話接続(SSHのように入る)
Enter-PSSession -ComputerName <NanoServer> -Credential <ユーザー名>
3) 複数台や一括処理(コマンドを投げて結果だけ受け取る)
Invoke-Command -ComputerName <NanoServer> -ScriptBlock { hostname; Get-Date }
そして「cmdを開きたい」場面の多くは、cmd.exeを“起動して作業する”のではなく、cmd互換のコマンドを“実行する”ことが目的です。PowerShellセッション上でcmdコマンドを叩けば足ります。
PowerShell上からcmdを実行する例
cmd.exe /c ver
cmd.exe /c ipconfig /all
cmd.exe /c bcdboot C:\Windows /s S:
ポイントは、Nano Serverで必要になる操作の多くはPowerShellだけで完結することです。cmdは「古いツールしか使えない」「ベンダー手順がcmd前提」といった場合の互換レイヤーとして使う、という位置づけが現実的です。
注意:ワークグループ環境はTrustedHostsでつまずきやすい
ドメイン参加していない(ワークグループ)構成だと、管理端末側のWinRM設定でTrustedHostsの追加が必要になることがあります。セキュリティ的にリスクがあるため、可能ならドメイン参加+Kerberosで運用するのが王道です。どうしてもワークグループで進める場合は、対象を限定したTrustedHosts設定、HTTPS(証明書)利用など、運用ポリシーに沿って設計してください。
ローカルで触れるのは「回復用コンソール」の範囲
Nano Serverには、ローカルで最低限の状態確認・復旧を行うための回復用コンソールが用意されます。ただし、ここで自由にcmdを開いて作業するような発想は取りにくく、基本は「ネットワークが死んだ」「リモート管理ができない」などの緊急時の復旧導線と考えるのが安全です。
PowerShellコマンドの -Verbose は何を意味するのか
-Verbose はPowerShellの共通パラメーターのひとつで、コマンドレットが出せる「詳細メッセージ(Verboseストリーム)」を表示させます。普通に実行しただけでは見えない、処理の進行状況や内部判断が出ることがあり、トラブルシューティングで非常に役立ちます。
PowerShellには“出力の種類(ストリーム)”がある
PowerShellの出力はすべて同じに見えて、実は用途別に流れが分かれています。-Verbose はそのうち「Verbose(詳細)」を表示するスイッチです。
| 種類 | ストリーム番号 | 代表例 | 主な用途 |
|---|---|---|---|
| 成功出力 | 1 | コマンドの結果オブジェクト | パイプラインで加工・集計 |
| エラー | 2 | 例外、エラーレコード | 失敗の検知、ログ |
| 警告 | 3 | Warningメッセージ | 注意喚起(致命ではない) |
| 詳細(Verbose) | 4 | 処理内容の説明、進捗 | 調査・動作確認 |
| デバッグ | 5 | Debugメッセージ | より開発寄りの追跡 |
| 情報 | 6 | Informationメッセージ | ログ用途(スクリプト設計次第) |
-Verbose が役立つ具体例
たとえばDNS設定などの変更は、成功/失敗だけでなく「どのIFに何を適用したか」を把握したい場面が多いです。Verbose対応のコマンドレットなら、次のように詳細ログを見ながら進められます。
Set-DnsClientServerAddress -InterfaceIndex 12 -ServerAddresses 192.168.1.53,192.168.1.54 -Verbose
また、Verboseはストリーム4なので、必要ならファイルに分離して保存できます。
# Verboseだけをファイルに保存(ストリーム4)
Invoke-Command -ComputerName <NanoServer> -ScriptBlock {
Set-DnsClientServerAddress -InterfaceIndex 12 -ServerAddresses 192.168.1.53,192.168.1.54 -Verbose 4> C:\Temp\dns-verbose.log
}
ポイント:Verboseは「成功出力」ではないため、パイプラインでオブジェクトとして加工する類のものではありません。運用では「調査ログ」と割り切って、必要なときだけONにするのがベターです。
Verboseが出る/出ないは“コマンド側の実装次第”
-Verbose を付けても何も増えないことがあります。これは「そのコマンドレットがVerboseメッセージを出していない」だけで、異常ではありません。逆にVerboseが充実しているコマンドレットは、何をどう適用しようとしているかが分かりやすく、運用の再現性が上がります。
$VerbosePreference を理解すると運用が安定する
スクリプト運用では、毎回-Verboseを付けるのではなく、状況に応じて表示方針を変えたくなります。そのときに使うのが$VerbosePreferenceです。
| 設定値 | 意味 | 使いどころ |
|---|---|---|
| SilentlyContinue | Verboseを表示しない(既定) | 通常運用 |
| Continue | Verboseを表示する | 調査・検証時 |
例:スクリプトの先頭で詳細ログを一時的にONにする。
$VerbosePreference = 'Continue'
# ここからVerboseが出る(コマンド側が対応していれば)
静的IPを設定するとDNS入力欄が出ない:DNSサーバーIPの設定方法
Nano Serverでは、GUIのネットワーク設定画面を前提にしないため、「静的IPを入れたのにDNS入力欄が無い」という現象は珍しくありません。結論はシンプルで、PowerShellでDNSサーバーを明示的に設定します。
作業の全体像
ネットワーク設定は「どのNICに」「どのIP/ゲートウェイを」「どのDNSを」適用するかを分解して考えると、確実に進められます。
| ステップ | 目的 | 代表コマンド |
|---|---|---|
| NICの特定 | 対象のInterfaceIndexを把握 | Get-NetAdapter |
| IP/GW設定 | 静的IP・デフォルトGWを適用 | New-NetIPAddress |
| DNS設定 | 名前解決の参照先を指定 | Set-DnsClientServerAddress |
| 確認 | 意図通り反映されたか検証 | Get-DnsClientServerAddress / Resolve-DnsName |
まずはNIC(InterfaceIndex)を特定する
Get-NetAdapter | Format-Table -Auto Name, InterfaceDescription, Status, MacAddress, LinkSpeed, ifIndex
ここで表示される ifIndex(InterfaceIndex)が後続コマンドのキーになります。複数NICがある環境では、名称(Name)を分かりやすく付け直すのも有効です。
Rename-NetAdapter -Name "Ethernet" -NewName "LAN1"
静的IPとデフォルトゲートウェイを設定する
すでにDHCPでアドレスが入っている場合、同一NICに複数アドレスが残ると混乱しやすいので、現状を確認してから進めます。
# 現在のIPv4アドレス確認
Get-NetIPAddress -AddressFamily IPv4 | Format-Table -Auto InterfaceIndex,IPAddress,PrefixLength,DefaultGateway
静的IPを付与する例(環境に合わせて読み替えてください)。
New-NetIPAddress -InterfaceIndex 12 -IPAddress 192.168.1.10 -PrefixLength 24 -DefaultGateway 192.168.1.1
もし既存の不要なIPが残っている場合は、意図したものだけ残すように整理します。
# 例:不要なIPを削除(対象は慎重に)
Remove-NetIPAddress -InterfaceIndex 12 -IPAddress 192.168.1.200 -Confirm:$false
DNSサーバーIPを設定する(本題)
DNSは次のコマンドが定番です。複数指定した場合は、並び順が優先順位として扱われます。
Set-DnsClientServerAddress -InterfaceIndex 12 -ServerAddresses 192.168.1.53,192.168.1.54
IPv6も使う環境なら、アドレスファミリや構成の方針(IPv4優先/IPv6優先)も含めて設計します。まずは「名前解決が通る」ことを最優先に、現場で扱いやすい形に寄せるのが現実的です。
DNS設定の確認と疎通チェック
# DNSサーバー確認
Get-DnsClientServerAddress -InterfaceIndex 12 | Format-List
# 名前解決テスト
Resolve-DnsName [www.microsoft.com](http://www.microsoft.com)
# ポート疎通(DNSやHTTPSなど)
Test-NetConnection -ComputerName 192.168.1.53 -Port 53
Test-NetConnection -ComputerName [www.microsoft.com](http://www.microsoft.com) -Port 443
DNSサフィックスや登録動作も必要なら明示する
Active Directory環境では、DNSサフィックス(例:corp.example.local)や、DNSへの動的登録が要件になることがあります。必要な場合は、次のような設定も検討します。
# 接続固有のDNSサフィックス例(要件がある場合のみ)
Set-DnsClient -InterfaceIndex 12 -ConnectionSpecificSuffix "corp.example.local"
# この接続のアドレスをDNSに登録する(要件がある場合のみ)
Set-DnsClient -InterfaceIndex 12 -RegisterThisConnectionsAddress $true
リモート作業で“自分の足を切る”事故を防ぐコツ
ネットワーク設定をリモートで変更すると、設定ミス=接続断で詰みやすいです。Nano Serverは特に「ローカルで戻す」導線が弱い前提なので、次の守り方が効きます。
- 作業前に現状設定を記録(Get-NetIPAddress / Get-DnsClientServerAddressの出力を保存)
- 2つのセッションで作業(片方で設定、片方で疎通確認)
- 可能なら仮想基盤のコンソールやサーバーのOOB管理(iLO/iDRAC等)を確保してから着手
- 変更後の確認コマンドを手順に組み込む(Resolve-DnsName、Test-NetConnection)
OEMドライバーとは何か:Nano Serverではどう扱われるのか
OEM(Original Equipment Manufacturer)ドライバーは、ざっくり言うとハードウェアメーカー(またはデバイスベンダー)が提供する専用ドライバーです。Windowsに標準で含まれる汎用ドライバー(in-box driver)では性能や機能が出し切れない、またはそもそも認識しない場合に導入します。
in-boxドライバーとOEMドライバーの違い
| 観点 | in-box(標準) | OEM(ベンダー提供) |
|---|---|---|
| 提供元 | OS(Microsoft) | メーカー/ベンダー |
| 狙い | 幅広い互換性・最低限の動作 | 性能・機能・安定性の最適化 |
| 例 | 汎用NIC/ストレージ | RAID/HBA、10GbE/25GbE NIC、特殊機能付きNIC |
| 運用上の注意 | 更新頻度はOS更新に依存 | ベンダー更新の追従、適用テストが必要 |
Nano Serverでドライバー周りが難しく感じる理由
Nano Serverは軽量化のため、一般的なGUI環境で当たり前にある管理ツールや互換部品が削られている(または使う前提が薄い)ため、次のギャップが起きやすいです。
- ベンダー手順が「GUIで実行」「Setup.exeでインストール」前提で、Nano Serverにそのまま当てはまらない
- 必要なのはINFベースのドライバーなのに、配布物が管理ツール込みの巨大パッケージで、抽出が必要
- ネットワーク/ストレージが不安定だと、そもそもリモート管理ができず、復旧導線が細い
そのため、Nano Serverでは特にネットワークアダプターとストレージコントローラー(RAID/HBA)のドライバー設計が重要になります。OSが軽量であるほど、土台となるI/O(NIC・Disk)が不安定だと運用が成立しません。
OEMドライバーの確認方法(考え方)
Windowsでは、サードパーティーのドライバーが導入されると、C:\Windows\INF配下に oemXX.inf のような名前で格納されることがあります。ここでいう「OEM」は“メーカー”という意味に近く、標準ドライバーではないものが入った目印になりやすいです(必ずしも全てがoem名になるわけではありません)。
実務的には「どのデバイスに、どのドライバーが当たっているか」を確認して、必要なら更新する、という手順になります。
ドライバーを追加・更新する現実的な手順
Nano Serverでは「実行形式インストーラー前提」を避け、INFドライバーの導入に寄せると安定します。代表的な進め方は2つです。
稼働中のOSに導入(可能な範囲で)
ドライバーがINF形式で用意できるなら、pnputil 等で導入できる場合があります(環境により利用可否や要再起動が変わります)。
# 例:ドライバーを追加してインストール(INFを指定)
pnputil /add-driver C:\Drivers\vendor\nic\driver.inf /install
ただし、リモート切断リスクが高い領域(NIC/ストレージ)の更新は、作業手順・メンテナンスウィンドウ・復旧導線を強めてから実施するのが鉄則です。
イメージにオフラインで組み込み(堅牢)
より安全なのは、VHD/VHDX等のOSイメージを管理端末でマウントし、DISMでドライバーを注入してから起動する方法です。OS起動前に整えるため、遠隔切断事故を減らせます。
# 例:オフラインイメージにドライバー追加(パスは環境に合わせて)
dism /Image:D:\Mount\Nano /Add-Driver /Driver:D:\Drivers\NIC /Recurse
# 追加済みドライバーの確認
dism /Image:D:\Mount\Nano /Get-Drivers /Format:Table
どちらの方式でも、次の観点は押さえておくと失敗しにくいです。
- 署名済みドライバーか(サーバーOSでは特に重要)
- 対象OS/ビルドとの互換性(「Windows Server向け」でも世代差で挙動が変わる)
- 導入後に必要な再起動の有無
- NIC更新なら、別経路(別NIC、コンソール、OOB管理)を確保してから実施
bcdboot.exe c:\windows /s s: は何をするコマンドなのか
bcdboot は、Windowsの起動に必要なファイルとBCD(Boot Configuration Data)を作成・展開するためのツールです。システムが起動しない、ディスクをクローンした、パーティション構成を変えた、といった場面で起動構成を作り直す目的で使われます。
まず押さえる:OSパーティションと“起動用パーティション”は別物
Windowsは多くの構成で、次の2つが分かれています。
- Windowsが入っているパーティション(例:C: の
C:\Windows) - 起動に必要なファイルを置くパーティション(UEFIならEFI System Partition、BIOSならSystem Reserved等)
つまり、C:\Windows が存在しても、起動用パーティション側のファイルやBCDが壊れていると起動しません。bcdboot はこの「起動側」を作り直すツールです。
コマンドの読み方:bcdboot.exe c:\windows /s s:
| 要素 | 意味 | ここがポイント |
|---|---|---|
bcdboot.exe | 起動ファイル/BCD構成の作成ツール | 起動の“材料”を作る |
c:\windows | 参照するWindowsディレクトリ | このWindowsを起動対象にする |
/s s: | システムパーティション(起動用)をS:として指定 | どこに起動ファイルを置くかを明示 |
ざっくり言うと、「C:\Windowsの内容を元に、S:(システムパーティション)へ起動用ファイルをコピーし、BCDを構成する」という動きです。これにより、起動用パーティションが空だったり壊れていたりしても、起動環境を再生成できます。
UEFI/BIOSで指定が必要になることがある(/f の考え方)
環境によっては、ファームウェア種別を明示したほうが事故が減ります。代表的な指定は次の通りです。
| 指定 | 意味 | よくある環境 |
|---|---|---|
/f UEFI | UEFI向けに起動ファイルを作成 | GPT + EFI System Partition |
/f BIOS | BIOS(レガシー)向けに作成 | MBR + System Reserved |
/f ALL | 両方を作成 | 移行/検証など特殊ケース |
例(UEFI想定):
bcdboot C:\Windows /s S: /f UEFI
よくある利用シーン
- OSはあるのに「起動デバイスが見つからない」などで起動不能になった
- ディスクをクローン/複製したら起動しなくなった(BCDやパーティション参照が崩れた)
- VHD/VHDXを別環境に移して起動させたい
- システムパーティションを作り直した、ドライブレターが変わった
実務での復旧手順例(UEFI環境の典型)
起動しない環境では、WinPEや回復環境から作業することが多いです。流れのイメージを掴むための例を示します(パーティション番号等は必ず現物確認してください)。
1) diskpartでEFIシステムパーティションにドライブレターを割り当てる
diskpart
list vol
select vol <EFI System Partitionの番号>
assign letter=S
exit
2) Windowsが入っているドライブ(C:とは限らない)を確認
dir C:\Windows
dir D:\Windows
3) bcdbootで起動環境を作成
bcdboot D:\Windows /s S: /f UEFI
WinPE上では、OSパーティションがD:に見えるなどドライブレターがずれるのが定番の落とし穴です。D:\Windows のように、実在するWindowsディレクトリを必ず確認してから実行します。
失敗しやすいポイント(チェックリスト)
- /s で指定しているS: が本当にシステムパーティション(EFI/予約領域)か
- Windowsの参照先(
C:\Windows等)が実在しているか(WinPEではC:とは限らない) - UEFI/BIOSを取り違えていないか(必要なら
/f UEFIなど明示) - 複数OSがある場合、どのWindowsを起動対象にするのかが意図通りか
現場で役に立つ:Nano Server運用の“最小セット”
最後に、今回の疑問が再発しないように、Nano Server運用で「まずこれだけ覚えておくと強い」セットをまとめます。
| 目的 | 推奨手段 | 理由 |
|---|---|---|
| 日常運用の操作 | PowerShell Remoting(Enter-PSSession / Invoke-Command) | ローカル前提を捨てると迷わない |
| 調査の深掘り | -Verbose とログ採取(ストリーム4) | 変更点の説明が残りやすい |
| DNS設定 | Set-DnsClientServerAddress | GUIが無くても確実に設定できる |
| ドライバーの安定化 | NIC/ストレージは特に慎重、可能ならオフライン注入 | リモート断のリスクを減らす |
| 起動不良の復旧 | bcdbootで起動ファイル/BCD再生成 | UEFI環境で特に効果が高い |
まとめ:Nano Serverは「遠隔で完結させる設計」に寄せると理解が早い
Nano Serverでのつまずきは、多くが「ローカルで操作できるはず」という期待値のズレから始まります。cmdは“開く”のではなく遠隔から“実行する”、DNSはGUIではなくPowerShellで明示する、ドライバーはin-boxとOEMを切り分けて計画的に当てる、起動修復はbcdbootの役割を理解して確実に対象パーティションを指定する――この整理ができると、Nano Serverはむしろ運用しやすいOSになります。

コメント