Windows Server 2019 Core for File Transfer without Copy-Item
皆さん、こんにちわ。
前回の記事から少し毛色を変えて、今回はWindows Server Coreのファイル転送といった内容をお届けしたいと思います。
しかしながら、なぜWindows Server のデスクトップエクスペリエンスを使わずにServer Coreを選んだか気になった方もいるのでは無いでしょうか。
それは、単純にCUIなら あの激重Windows Serverも軽くなるんじゃね?!というおバカな発想から生まれ選ばれました。w
というわけで早速やっていきたいと思います。
ちなみに、ストレージの容量は20GBもあれば足ります。
OS領域としてWindowsが利用するのは多くても10GBぐらいなもんです。
1 . Windows Server Coreを起動します。
Ctrl + Alt + Delete を押下すると、ログインパスワードを求めてくるのでパスワードを入力します。
2 . パスワード入力画面
ログインに成功するとまずCMD(コマンドプロンプト)が出てきます。
しかし、コマンドプロンプトでは出来ることが限られてくる為、ここでPowerShellに切り替えます。
C:\Users\Administrator> powershel
そうすると、cmdは消えず同一ウィンドウでPowerShellに切り替わると思います。
画像のようになっていれば、正常にCMD(コマンドプロンプト) -> PowerShellへの切り替えが出来ています。
なお、この時点でPS C:\Users\Administrator>
となっているため管理者権限が有効の状態になります。
3 . では、Windows Server Core側でPowerShellのリモート接続を使えるようにしておきます。
PS C:\Users\Administrator> Enable-PSRemoting
上記コマンド実行後、Windows10側のPowerShellで
Enter-PSSession -ComputerName WindowsServer CoreのIP -Credential Administrator
を入力するとWindows10 -> Windows Server Coreへリモート接続が出来るようになります。
4 . 次に、Windows Server 特有ではありますがIPv4 , IPv6のPingを返してくれない問題を解決します。
PowerShellで、下記コマンドをそれぞれ入力します。
ご自身の環境に合わせてコマンドを入力してください。
間違ったコマンドを入力するのはエラーの元です!ww
IPv4 (プライベート)
PS C:\Users\Administrator> Get-NetFirewallRule -Name FPS-ICMP4-ERQ-In | Set-NetFirewallRule -enabled true;
IPv6 (プライベート)
PS C:\Users\Administrator> Get-NetFirewallRule -Name FPS-ICMP6-ERQ-In | Set-NetFirewallRule -enabled true;
IPv4 (ドメイン参加時)
PS C:\Users\Administrator> Get-NetFirewallRule -name FPS-ICMP4-ERQ-In-NoScope | Set-NetFirewallRule -enable true
IPv6 (ドメイン参加時)
PS C:\Users\Administartor> Get-NetFirewallRule -name FPS-ICMP6-ERQ-In-NoScope | Set-NetFirewallRule -enable true
ex. Windows 10 -> Windows Server Core
な時、コマンドを実行するとpingが帰ってくるようになります。
次に、Windows Server Coreのhostnameを変更します。
基本hostnameはデフォルトで問題は無いわけですが、インストールする製品や役割専用のマシンとする場合はhostnameを変更し一発で何用のマシンなのかを識別出来たほうがイイと思うのでここでもhostnameを変更しておきます。
PS C:\Users\Administrator> Rename-Computer -NewName "cs1" -Force -Restart
ここでは、VMware Connection Server をインストールする予定なのでhostnameを CS1 としました。
上記コマンドを実行するとコマンド最後部に -Restartとあることからマシンが再起動します。
再起動後、マシンが復帰したらC$ (管理共有)にアクセスする為のレジストリキー編集に移りたいと思います。
5 . Windowsには初期状態でC$ (管理共有)というものが備わっています。
これをWindows Server Coreで利用したいのですが、ユーザーアカウント制御(UAC)が邪魔してるらしく正常にC$ (管理共有)にアクセスすることが出来ません。
ここで、ユーザーアカウント制御(UAC)をブチ切りしても構わないのですが出来る限りWindows Server Coreの初期設定を維持しておきたいという流れもあるのでレジストリキーを変更しユーザーアカウント制御(UAC)が有効の状態で C$ (管理共有)にアクセス出来るようにしたいと思います。
変更するレジストリは以下の通りです。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
名前 | 値 |
---|---|
LocalAccountTokenFilterPolicy | 1 |
では実際に変更作業をPowerShellで行っていきます。
PS C:\Users\Administrator> New-ItemProperty -LiteralPath 'HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'LocalAccountTokenFilterPolicy' -PropertyType 'DWord' -Value 1
ワンライナーで申し訳ないですww
レジストリキーが適切に追加され反映されているかを確認します。
PS C:\Users\Administrator> Get-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
ConsentPromptBehaviorAdmin : 5
ConsentPromptBehaviorUser : 3
DelayedDesktopSwitchTimeout : 0
DisableAutomaticRestartSignOn : 1
DSCAutomationHostEnabled : 2
EnableInstallerDetection : 1
EnableLUA : 1
EnableSecureUIAPaths : 1
EnableUIADesktopToggle : 0
EnableVirtualization : 1
PromptOnSecureDesktop : 1
ValidateAdminCodeSignatures : 0
disablecad : 0
dontdisplaylastusername : 0
legalnoticecaption :
legalnoticetext :
scforceoption : 0
shutdownwithoutlogon : 0
undockwithoutlogon : 1
LocalAccountTokenFilterPolicy : 1
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies
PSChildName : System
PSProvider : Microsoft.PowerShell.Core\Registry
LocalAccountTokenFilterPolicy の欄が 1 と書かれているのが分かると思います。
これで、レジストリの編集は終了です。
6 . では次にC$ (管理共有)のSMB用にファイアウォールのルール適用を行っていきます。
ICMP4 , ICMP6の時と同様ですが、SMBの Inbound Outboundの両方にルール適用をしていきます。
PS C:\Users\Administrator> Set-NetFirewallRule FPS-SMB-Out-TCP -Enabled True
PS C:\Users\Administrator> Set-NetFirewallRule FPS-SMB-In-TCP -Enabled True
下記コマンドでルールが適用されているか確認をします。
PS C:\Users\Administartor> Get-NetFirewallRule *smb-out* | ft Name,DisplayName,Enabled
Name DisplayName Enabled
---- ----------- -------
FPS-SMB-Out-TCP ファイルとプリンターの共有 (SMB 送信) True
PS C:\Users\Administrator> Get-NetFirewallRule *smb-in* | ft Name,DisplayName,Enabled
Name DisplayName Enabled
---- ----------- -------
FPS-SMB-In-TCP ファイルとプリンターの共有 (SMB 受信) True
ここまで終われば、Windows10側のエクスプローラーで
\\Windows Server CoreのIPアドレス\c$
とエクスプローラー上部のURL欄に入力すると Windows Server Coreの C$配下のフォルダ、ファイルの読み取り、変更等のフルコントロールが割り当たっているのでファイルのコピーやフォルダのコピー等自由に出来るかと思われます。
以上で、Windows Server 2019 Core for File Transfer without Copy-Item を終わります。
お疲れさまでした!!
引用サイト
PowerShellを使ってリモートでコマンドを実行する方法WIN 2019 Core activate SMB-in rule via PowerShell
PowerShellを使ってフォルダーを共有したり、共有アクセス許可を設定する方法