Infelizmente, o Get-GPO
cmdlet só pode obter GPOs de um domínio; não parece haver nenhum equivalente gerenciado do método COM IGroupPolicyObject::OpenLocalMachineGPO
. Existem outras maneiras de definir isso, no entanto. Supondo que a Política de Grupo existente já não especifique essa configuração de política, ajustar o Registro diretamente deve funcionar bem:
$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()
Isso não afetará o que você vê no Editor de Diretiva de Grupo Local, mas será visto pela infraestrutura do Windows Update. Como você não informou a hora do dia em que as atualizações devem ser instaladas, configurei para meia-noite. Você pode alterar isso alterando o valor ScheduledInstallTime
.
Para determinar quais configurações do Registro correspondem a uma determinada política, você pode usar a ferramenta Inspetor de Elementos no meu aplicativo de código aberto Política Plus . Falando de Policy Plus, você também pode carregá-lo como um assembly do PowerShell para editar o GPO local. Primeiro, faça o download faça o download e use a guia Propriedades no Explorer para "desbloqueá-lo"; isso permite que o .NET carregue em outro processo. Em seguida, coloque-o no mesmo diretório desse script:
[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()
Isso tira proveito de PolicyLoader
e PolFile
classes. Quando o script for concluído, você deverá ver esta saída (devido às duas últimas chamadas):
saved to disk and invoked policy refresh
True
Dessa forma, as alterações serão visíveis no Editor de Diretiva de Grupo Local e a infraestrutura normal da Diretiva de Grupo as aplicará ao Registro.