Windows Server 2025 / WinRMとPowerShellリモート処理で管理する
PowerShellリモート処理は、別のサーバーでコマンドを実行したり対話型シェルを開いたりする仕組みです。Windows Server 2025ではWinRMの応答だけでなく、認証と実行権限も確認します。
設定する場所を取り違えない
待ち受けの設定はFS1のコンソール、接続コマンドは管理PCで実行します。逆にすると不要な待ち受けを開いたり別のPCを調べたりします。この例はWindows PowerShellとWinRMを使い、PowerShell 7のSSH接続は扱いません。
FS1の管理者PowerShellで現状を確認します。すでに構成済みの場合は重ねて変更する必要はありません。
Get-Service WinRM
Get-PSSessionConfiguration
Test-WSMan localhost
必要な場合だけ対象側を有効にする
hostname
Enable-PSRemoting -Force
Test-WSMan localhost
名前が対象のFS1であることを確認して実行します。待ち受け、セッション、ファイアウォールに影響するため、管理PCや必要なサブネットに範囲を制限します。WinRMの既定はHTTPが5985、HTTPSが5986です。
HTTPという名称だけで認証済みメッセージが無保護とは判断できません。WinRMの認証とメッセージ保護を確認し、接続先の識別と資格情報の保護を設計します。
ドメインでは名前で接続する
PCとFS1が同じドメインに参加し、DNSと時刻が正常で、権限がある段階で実行します。ドメイン構築前に同じ成功を期待しないでください。
Test-WSMan -ComputerName 'fs1.ad.example.test'
Enter-PSSession -ComputerName 'fs1.ad.example.test'
hostname
whoami
Exit-PSSession
Enter-PSSession後のコマンドは接続先で実行され、Exit-PSSessionで管理PCへ戻ります。IP指定ではKerberosを利用する名前指定と認証条件が変わるため、正常なドメインDNSがある場合はFQDNを使います。
ワークグループの信頼範囲を限定する
IPやワークグループでの接続はHTTPSや限定したTrustedHostsなど追加条件があります。TrustedHosts自体は相手の身元を認証しません。運用では信頼された証明書によるHTTPSも検討します。リモート処理の障害対応を確認してください。
隔離実習ではFS1のコンソールでIPを照合し、管理PCで元の値を記録してその対象だけを追加します。アカウント名は実際の対象管理者へ置き換えます。
$previousHosts = (Get-Item WSMan:\localhost\Client\TrustedHosts).Value
$labTargets = (@($previousHosts -split ',') + '172.24.50.20' | Where-Object { $_ } | Sort-Object -Unique) -join ','
Set-Item WSMan:\localhost\Client\TrustedHosts -Value $labTargets
$labCredential = Get-Credential -UserName 'FS1\Administrator'
Enter-PSSession -ComputerName '172.24.50.20' -Credential $labCredential
hostname
Exit-PSSession
同じ管理PCのセッションで、作業後に元の値へ戻します。
if ([string]::IsNullOrEmpty($previousHosts)) {
Clear-Item WSMan:\localhost\Client\TrustedHosts
} else {
Set-Item WSMan:\localhost\Client\TrustedHosts -Value $previousHosts
}
独自のローカル管理者ではリモートUACの制約もあります。保護機能を広く無効化するのではなく、認証設計を見直してください。
単発の問い合わせで結果を確認する
ドメインの前提を満たした後、次を管理PCから実行します。
Invoke-Command -ComputerName 'fs1.ad.example.test' -ScriptBlock {
Get-CimInstance Win32_OperatingSystem | Select-Object Caption,Version,LastBootUpTime
}
PSComputerNameとOSを照合し、ローカルの結果と混同しないようにします。DNS、TCP、WinRM、認証、セッションの許可を順に切り分けます。Test-WSManが応答してもコマンド実行権限までは証明しません。待ち受けを戻す前は、WACなど別の管理ツールが使っていないか確認します。




