web-dev-qa-db-ja.com

Windows Server2016でWindowsUpdateを構成する

問題

Windows Updateを有効にして、インストールを自動的にダウンロードしてスケジュールします。特定の日(土曜日)に実行するようにスケジュールします。

私が試した解決策

powershell/gpmcモジュールを使用してgrouppolicyスクリプトを記述し、WindowsUpdateの設定を変更します。

私が探している最終状態は次のとおりです。

gpedit.msc-> Administrative Templates/Windows Components/Windows Update

自動更新の構成->

Enabled

Auto download and schedule the install (4)

Every Saturday (7)

直面している問題

PowerShellを使用してWindowsServer2016でこれを行うためのドキュメントが見つかりません。

注:

  • マシンはADの一部ではありません。
  • ローカルポリシーを変更しようとしています。
3
M4ver1k

残念ながら、 Get-GPO コマンドレットはドメインからのみGPOを取得できます。 COMメソッドに相当する管理対象はないようです IGroupPolicyObject::OpenLocalMachineGPO 。ただし、これを設定する方法は他にもあります。既存のグループポリシーでこのポリシー設定がまだ指定されていない場合、レジストリを直接調整すると問題なく機能するはずです。

$hklm = [Microsoft.Win32.RegistryKey]::OpenBaseKey('LocalMachine', 'Default')
$wu = $hklm.CreateSubKey('SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU')
$wu.SetValue('NoAutoUpdate', 0, 'DWord')
$wu.SetValue('AUOptions', 4, 'DWord')
$wu.SetValue('ScheduledInstallDay', 7, 'DWord')
$wu.SetValue('ScheduledInstallTime', 0, 'DWord')
$wu.Dispose()
$hklm.Dispose()

これは、ローカルグループポリシーエディターに表示される内容には影響しませんが、WindowsUpdateインフラストラクチャには表示されます。アップデートをインストールする時間帯が指定されていないため、深夜に設定しました。 ScheduledInstallTime値を変更することで、これを変更できます。

特定のポリシーに対応するレジストリ設定を判別するには、オープンソースアプリケーションのElement Inspectorツールを使用できます Policy Plus 。 Policy Plusと言えば、PowerShellからアセンブリとしてロードして、ローカルGPOを編集することもできます。まず、 ダウンロード そしてエクスプローラーの[プロパティ]タブを使用して「ブロックを解除」します。これにより、.NETはそれを別のプロセスにロードできます。次に、このスクリプトと同じディレクトリに配置します。

[System.Reflection.Assembly]::LoadFile((gi '.\Policy Plus.exe').FullName) | Out-Null
$loader = [PolicyPlus.PolicyLoader]::new('LocalGpo', '', $false)
$pol = $loader.OpenSource()
$pol.SetValue('SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU', 'NoAutoUpdate', 0, 'DWord')
$pol.SetValue('SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU', 'AUOptions', 4, 'DWord')
$pol.SetValue('SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU', 'ScheduledInstallDay', 7, 'DWord')
$pol.SetValue('SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU', 'ScheduledInstallTime', 0, 'DWord')
$loader.Save()
$loader.Close()

これは、Policy Plusの PolicyLoader および PolFile クラスを利用します。スクリプトが完了すると、次の出力が表示されます(最後の2回の呼び出しによる)。

saved to disk and invoked policy refresh
True

このようにして、変更ローカルグループポリシーエディターに表示され、通常のグループポリシーインフラストラクチャがそれらをレジストリに適用します。

3
Ben N