Windows Server Coreの構成・管理に役立つ基本コマンド徹底解説
本記事では、Windows Server Coreを構成および管理するために使用する基本的なcmdコマンドとPowerShellコマンドについて解説します。初心者の方はもちろん、経験豊富なシステム管理者にとっても、Server Core管理の基本的なコマンド集としてリファレンスとしてご活用いただける内容となっています。
目次
- SCONFIGを使用したWindows Server Coreの構成
- Server Coreを構成するための基本PowerShellコマンド
- Windows Server Coreで便利なコマンド集
Server Coreとは、ほとんどのグラフィカルツールやMMCスナップインを含まない、特殊なWindows Serverのインストールモードです。Server Coreはコマンドプロンプトから操作するか、Windows Admin Centerなどのツールを使ってリモートから管理します。
Windows Server Coreの主なメリットは以下の通りです。
- 必要なリソースが少ない
- 安定性とセキュリティが向上し、更新プログラムも少なくて済む(コード量と使用コンポーネントが少ないため)
- Active Directoryドメインコントローラー、DHCPサーバー、Hyper-Vホスト、SMBファイルサーバーなど、インフラ系ロールサーバーに最適
なお、Server Coreは通常の物理または仮想Windows Serverインスタンスと同様にライセンスされます(完全無料のHyper-V Serverとは異なります)。
Windows Server 2016/2019をCoreモードでインストールするには、標準のインストールを選択します。Windows Server (Desktop Experience)を選択すると、GUI版のOSがインストールされます(以前のバージョンでは「Server with a GUI」と呼ばれていました)。

Windows Server 2016/2019では、サーバーの再インストールなしでFull GUIモードとCoreモードを切り替えることはできませんので注意してください。
Windows Server Coreのインストール後、ローカル管理者のパスワード設定を求められます。

Server Coreにログオンすると、コマンドプロンプト(cmd.exe)が表示されます。代わりにPowerShellコンソールを起動したい場合は、レジストリを変更しましょう。以下のコマンドを実行します。
Powershell.exe
Set-ItemProperty -Path 'HKLM:\Software\Microsoft\Windows NT\CurrentVersion\WinLogon' -Name Shell -Value 'PowerShell.exe'
その後、サーバーを再起動します。
Restart-Computer -Force

誤ってコマンドプロンプトのウィンドウを閉じてしまった場合は、Ctrl+Alt+Deleteを押してタスクマネージャーを開き、「ファイル」→「実行」からcmd.exe(またはPowerShell.exe)を実行すれば復旧できます。
SCONFIGを使用したWindows Server Coreの構成
Server Coreの基本構成には、組み込みのsconfigスクリプトを利用できます。コンソールでsconfigコマンドを実行するだけで、複数の項目を含むメニューが表示されます。

サーバー構成メニューでは、以下の操作が可能です。
- ドメインまたはワークグループへの参加
- コンピューター名(ホスト名)の変更
- ローカル管理者の追加
- リモート管理とICMP応答の許可/拒否
- Windows Update設定の構成
- Windows更新プログラムのインストール
- RDPの有効化/無効化
- ネットワークアダプター設定(IPアドレス、ゲートウェイ、DNSサーバー)の構成
- 日付と時刻の設定
- テレメトリ設定の変更
- Windows Serverライセンスの認証
- ログオフ、再起動、シャットダウン
sconfigの各項目には番号が割り当てられています。目的の項目を開くには、その番号を入力してEnterキーを押すだけです。一部のメニュー項目にはサブ項目があり、そちらも番号を入力して移動します。

sconfigの各設定は直感的に理解できるため、ここではすべてを説明しません。ただし、多くの場合、管理者は新しいServer Coreホストの構成にPowerShellスクリプトを使用することを好みます。特に大量展開のシナリオでは、より簡単かつ迅速に作業できるためです。
Server Coreを構成するための基本PowerShellコマンド
ここからは、Server Coreの構成に使用できる基本的なPowerShellコマンドを見ていきましょう。
Windows Serverのビルド情報とPowerShellのバージョンを確認するには:
Get-ComputerInfo | select WindowsProductName, WindowsVersion, OsHardwareAbstractionLayer
$PSVersionTable

Server Coreを再起動するには:
Restart-Computer
Server Coreのコンソールからログオフするには:
logoff
PowerShellによるネットワーク設定の構成
次に、PowerShellを使ってネットワーク設定を構成します(デフォルトではDHCPからIPアドレスを取得するようになっています)。まず、ネットワークアダプターの一覧を表示します。
Get-NetIPConfiguration
変更したいネットワークアダプターのインターフェイスインデックス(InterfaceIndex)を指定し、新しいIPアドレスとDNSサーバーを設定します。
New-NetIPaddress -InterfaceIndex 4 -IPAddress 192.168.1.100 -PrefixLength 24 -DefaultGateway 192.168.1.1
Set-DNSClientServerAddress –InterfaceIndex 4 -ServerAddresses 192.168.1.11,192.168.101.11

現在のネットワーク設定を確認します。
Get-NetIPConfiguration
IPアドレスをリセットしてDHCPからの取得に戻したい場合は、以下のコマンドを実行します。
Set-DnsClientServerAddress –InterfaceIndex 4 –ResetServerAddresses
Set-NetIPInterface –InterfaceIndex 4 -Dhcp Enabled
ネットワークアダプターを有効/無効化するには:
Disable-NetAdapter -Name "Ethernet0"
Enable-NetAdapter -Name "Ethernet0"
ネットワークアダプターのIPv6サポートを有効化、無効化、または状態確認するには:
Disable-NetAdapterBinding -Name "Ethernet0" -ComponentID ms_tcpip6
Enable-NetAdapterBinding -Name "Ethernet0" -ComponentID ms_tcpip6
Get-NetAdapterBinding -ComponentID ms_tcpip6
PowerShellやシステム接続用にwinhttpプロキシサーバーを構成するには:
netsh Winhttp set proxy <servername>:<port number>
日付と時刻の設定方法
日付、時刻、タイムゾーンは、グラフィカルツールのintl.cplまたはPowerShellで設定できます。
Set-Date -Date "07/21/2021 09:00"
Set-TimeZone "Tokyo Standard Time"
コンピューター名の変更、ドメイン参加、Server Coreの認証
コンピューター名(ホスト名)を変更するには:
Rename-Computer -NewName be-srv01 -PassThru

オンプレミスのActive Directoryドメインにサーバーを追加するには:
Add-Computer -DomainName "corp.example.com" -Restart
ローカルAdministratorsグループに追加のユーザーを加えたい場合は、グループポリシーで構成するか、手動で追加できます。
Add-LocalGroupMember -Group "Administrators" -Member "corp\jsmith"
Windows Serverを認証するには、プロダクトキーを入力します。
slmgr.vbs –ipk <productkey>
slmgr.vbs –ato
KMSサーバーで認証することも可能です。例えば、KMSホスト上でWindows Server Core 2019 Standardを認証する場合:
slmgr /ipk N69G4-B89J2-4G8F4-WWYCC-J464C
slmgr /skms kms.corp.example.com:1688
slmgr /ato
Windows Server Coreのリモート管理を有効にする
RDP経由でServer Coreへのリモートアクセスを許可するには:
cscript C:\Windows\System32\Scregedit.wsf /ar 0
リモート管理を許可するには:
Configure-SMRemoting.exe –Enable
Enable-NetFirewallRule -DisplayGroup "Windows Remote Management"
現在のリモート管理設定を表示するには:
Configure-SMRemoting.exe -Get
PowerShell Remoting用にWinRMを許可するには:
Enable-PSRemoting –force
Windows Server Coreを実行しているサーバーは、別のサーバーから(ServerManager.exeを使用)、Windows Admin Center(WAC)経由でブラウザーから、RSATを使用した任意のワークステーションから管理できます。また、RDP、PowerShell Remoting、SSH(最新のWindowsバージョンにはSSHサーバーが組み込まれています)でも接続可能です。
Server CoreでのWindowsファイアウォールの構成
PowerShellによるWindows Defenderファイアウォールの構成方法については専用記事がありますので、ここでは基本的なコマンドのみ紹介します。
すべてのプロファイルに対してWindows Defenderファイアウォールを有効にするには:
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True
ネットワークの種類を「パブリック」から「プライベート」に変更するには:
Get-NetConnectionProfile | Set-NetConnectionProfile -NetworkCategory Private
Windowsファイアウォールを完全に無効化するには(非推奨):
Get-NetFirewallProfile | Set-NetFirewallProfile -enabled false
リモート管理ツールによる接続を許可するには:
Enable-NetFireWallRule -DisplayName "Windows Management Instrumentation (DCOM-In)"
Enable-NetFireWallRule -DisplayGroup "Remote Event Log Management"
Enable-NetFireWallRule -DisplayGroup "Remote Service Management"
Enable-NetFireWallRule -DisplayGroup "Remote Volume Management"
Enable-NetFireWallRule -DisplayGroup "Remote Scheduled Tasks Management"
Enable-NetFireWallRule -DisplayGroup "Windows Firewall Remote Management"
Enable-NetFirewallRule -DisplayGroup "Remote Administration"
Windows Server Coreに更新プログラムをインストールする方法
更新オプションの管理には、Windows Updateのグループポリシーを使用するのが望ましいですが、手動で設定することもできます。
自動更新を無効にするには:
Set-ItemProperty -Path HKLM:\Software\Policies\Microsoft\Windows\WindowsUpdate\AU -Name AUOptions -Value 1
利用可能な更新プログラムを自動的にダウンロードするには:
Set-ItemProperty -Path HKLM:\Software\Policies\Microsoft\Windows\WindowsUpdate\AU -Name AUOptions -Value 3
インストール済みの更新プログラム一覧を取得するには:
Get-Hotfix
または
wmic qfe list
Windows更新プログラムを手動でインストールするには、wusaツールを使用します。
wusa kbnamexxxxx.msu /quiet
コマンドラインから更新プログラムをインストール・管理するには、PowerShellのPSWindowsUpdateモジュールを利用すると便利です。
Windows Coreのロール、サービス、プロセスの管理
Windows Server Coreで利用可能なすべてのロールの一覧を取得するには、以下のPowerShellコマンドを実行します。
Get-WindowsFeature

インストール済みのロールと機能の一覧を取得します(サーバーの用途を素早く把握できます)。
Get-WindowsFeature | Where-Object {$_.installstate -eq "installed"} | ft Name,Installstate
例えば、DNSロールをインストールするには:
Install-WindowsFeature DNS -IncludeManagementTools
Windowsの全サービス一覧を取得するには:
Get-Service
停止中のサービスをすべて確認するには:
Get-Service | Where-Object {$_.status -eq "stopped"}
サービスを再起動するには:
Restart-Service -Name spooler
プロセスの管理には、タスクマネージャー(taskmgr.exe)またはPowerShellのProcessモジュールを使用できます。
Get-Process cmd, wuaucl* | Select-Object ProcessName, StartTime, MainWindowTitle, Path, Company|ft
Windows Server Coreで便利なコマンド集
最後に、Server Coreの管理で筆者が頻繁に使用している、実用的なPowerShellコマンドとスクリプトをいくつか紹介します。
物理ディスクの状態と健全性に関する情報(デフォルトのStorageディスク管理モジュールを使用):
Get-PhysicalDisk | Sort Size | FT FriendlyName, Size, MediaType, SpindleSpeed, HealthStatus, OperationalStatus -AutoSize
ディスクの空き容量情報:
Get-WmiObject -Class Win32_LogicalDisk |
Select-Object -Property DeviceID, VolumeName, @{Label='FreeSpace (Gb)'; expression={($_.FreeSpace/1GB).ToString('F2')}},
@{Label='Total (Gb)'; expression={($_.Size/1GB).ToString('F2')}},
@{label='FreePercent'; expression={[Math]::Round(($_.freespace / $_.size) * 100, 2)}}|ft

サーバーの直近10回の再起動履歴:
Get-EventLog system | where-object {$_.eventid -eq 6006} | select -last 10
インストール済みプログラムの一覧:
Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize
外部サイトからZIPファイルをダウンロードして展開するには:
Invoke-WebRequest https://servername/file.zip -outfile file.zip
Expand-Archive -path '.\file.zip' -DestinationPath C:\Users\Administrator\Documents\
ネットワーク経由でリモートコンピューターにディレクトリ内の全ファイルをコピーするには、Copy-Itemコマンドレットを使用します。
$session = New-PSSession -ComputerName be-dc01
Copy-Item -Path "C:\Logs\*" -ToSession $session -Destination "C:\Logs\" -Recurse -Force
デバイスドライバーをインストールするには:
Pnputil –i –a c:\install\hpspp\hpdp.inf
また、MicrosoftはServer Core App Compatibility Feature on Demand(FOD)という特別なパッケージを提供しており、Windows Server Core 2019に一部のグラフィカルツールやMMCスナップイン(MMC、Eventvwr、Hyper-V Manager、PerfMon、Resmon、Explorer.exe、Device Manager、PowerShell ISEなど)をインストールできるようになります。FODは、Microsoftサブスクリプションが有効であればISOファイルとしてダウンロードできます。インストール方法は以下の通りです。
Add-WindowsCapability -Online -Name ServerCore.AppCompatibility~~~~0.0.1.0
なお、Server Core App Compatibility FODのインストールにより、Server Core上で約200MBの追加RAMが消費される点に注意してください。

本記事では、Windows Server Coreの管理に必要な最も有用なコマンドをまとめました。今後も随時記事を更新し、日常業務に必要と思われる新しいコマンドを追加していく予定です。
-
Windows 10でFTPサーバーを構築・管理する方法【初心者向け完全ガイド】
Windows 10にFTP(File Transfer Protocol)サーバーを構築すると、どこからでも自分のPCにファイルをアップロード・ダウンロードできるようになります。FTPサーバーは、いわば「自分が完全にコントロールできるプライベートクラウド」です。通信速度は契約しているインターネット回線に依存し、月間の転送量制限もありません。また、ファイルのサイズや種類による制限もないため、1KBの小さなバックアップファイルでも、1TBもの大容量データでも問題なく扱えます。アカウント数にも上限がないため、友人や同僚、家族と一緒にファイルを保存・共有することも可能です。 この記事では、Windo
-
Windows 10・8.1・7でFTPサーバーを構築・設定する完全ガイド(2022年最新版)
ネットワーク経由でファイルを共有・アクセスするために、Windows 10のFTPサーバーを設定したいとお考えですか?この記事では、Windows 10や8.1でFTPサーバーを作成する方法を詳しく解説します。さらに、FTPサーバー経由でファイルを共有する方法、LAN・WAN経由でどこからでもアクセスする方法、ユーザー名とパスワードによるアクセス制限や匿名アクセスの設定方法についてもご紹介します。内部ネットワーク用か外部ネットワーク用か、FTPサーバーの用途に応じて適切な設定を選びましょう。 FTPは「File Transfer Protocol(ファイル転送プロトコル)」の略で、クライアント