Graças à percepção da resposta da @ Clayton e da esta resposta a outra pergunta, consegui que ela funcionasse Win2016. Eu tive que criar C:\Windows\System32\GroupPolicy\Machine\Scripts\psscripts.ini
:
[Startup]
0CmdLine=C:\WINDOWS\System32\GroupPolicy\Machine\Scripts\Shutdown\seppuku.ps1
0Parameters=
Além de definir uma série de chaves de registro:
-
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\Scripts\Shutdown
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\Scripts\Shutdown
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\Shutdown
%code%HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\Shutdown
HKLM\SOFTWARE\Policies\Microsoft\Windows\System\Scripts\Shutdown
%code%HKLM\SOFTWARE\Policies\Microsoft\Windows\System\Scripts\Shutdown
\Shutdown
%code%\Shutdown
C:\WINDOWS\System32\GroupPolicy\Machine\Scripts\Shutdown\seppuku.ps1
gpedit.msc
- %code%
- %code%
- %code%
- %code%
- %code%
Aqueles que terminam em %code% obtêm valores de política:
"GPO-ID"="LocalGPO"
"SOM-ID"="Local"
"FileSysPath"="C:\Windows\System32\GroupPolicy\Machine"
"DisplayName"="Local Group Policy"
"GPOName"="Local Group Policy"
"PSScriptOrder"=dword:00000001
Aqueles que terminam em %code% obtêm valores de script:
"Script"="C:\WINDOWS\System32\GroupPolicy\Machine\Scripts\Shutdown\seppuku.ps1"
"Parameters"=""
"IsPowershell"=dword:00000001
"ExecTime"=hex(b):00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
Isso é para um script de desligamento do PowerShell localizado em %code% . Definir tudo isso é uma dor, mas totalmente possível usando o Chef, e depois de uma convergência, vejo o script registrado em %code% . Eu ainda tenho que confirmar completamente o script realmente executa no desligamento, esse é o meu próximo passo, mas acredito que deveria.