Windows Server 2016またはWindows Server Semi Annual ChannelのServer Core時のシェルはCMDですが、PowerShellにしたいところでした。
で、いろいろネットに載ってますが、とりあえず、レジストリのShellを変更すればいいとのこと。
HKLM\Software\Microsoft\WindowsNT\CurrentVersion\Winlogon
のShellの値をPowerShell.exeに変更すればいいということですが、今後、Semi Annual Channelを導入していくと、1台づつ設定するのはめんどくさいので、GPOを使って設定します。
とりあえず、GPOを一つ作り、
グループポリシーエディターでコンピューターの構成\基本設定\Windowsの設定\レジストリを右クリックして新規作成ーレジストリ項目をクリック。
レジストリ値を設定します。
Server Coreを判別するためにWMIフィルターを使いました。
今回の設定はWindows Server 2016以降になります。2012 R2ではまた別のフィルターを設定します。
WMIフィルターを新規作成し、上記のようなクエリーを指定しました。
OperatingSystemSKUの値を判別していますが、これがまた曲者で・・・
- Windows Server Semi Annual DataCenter ServerCore 145(17623で帰ってきた値)
- Windows Server Semi Annual Standard ServerCore 146?(未確認)
- Windows Server 2016 LTSB DataCenter ServerCore 147 (WMIドキュメントから確認)
- Windows Server 2016 LTSB Standard ServerCore 148 (WMIドキュメントから確認)
となっているようで、とりあえず、上記4つに当てはまる場合抽出するよう記載しています。
グループポリシーの管理で、ServerCore用のポリシーのWMIフィルターに、上記のフィルターを設定します。
グループポリシーを適用して結果からクエリーを確認します。
とりあえず、こんな感じでやりましたが、2012 R2と一緒にやろうとすると、クエリを複雑にする必要があって、別々
にポリシー作った方が早いかもと思ってしまいます。
やっぱり、ログイン後はPowerShellのほうがらくちんですね。