XPワークステーションにシャットダウンスクリプトとして展開するスクリプトを作成しました。UI(gpedit.msc)を使用してスクリプトをシャットダウンスクリプトとして追加できることはわかっていますが、スクリプトの展開を自動化します。ワークステーションはWindowsドメインの一部ではありません。OCSインベントリで展開します。
Windowsレジストリにエントリを追加しようとしましたが、これは機能しません。 gpedit.mscを実行したときに追加したものが表示されません。 gpedit.mscで何かを追加すると、手動でレジストリに追加したものを上書きするようです。
私はそれを働かせました。
1台のコンピューターにgpedit.mscでスクリプトを追加しました。 HKLM\Software\Policies\Microsoft\Windows\System\Scripts
およびHKLM\Software\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine
からレジストリキーをエクスポートしました。 C:\WINDOWS\SYSTEM32\GroupPolicy
ディレクトリも圧縮しました。
別のコンピューターで、最初のコンピューターでイヤラーをエクスポートした2つの.regファイルでレジストリにパッチを適用しました。また、Zipファイルを2台目のPCの同じ場所に解凍しました。
スクリプトはシャットダウン時に実行され、gpedit.mscに表示されます。すべてが良いようです!
これを機能させるのに苦労している人にとって、私の同情。私は何百時間もかけて、gpeditが何百もの変更を加えることが実際に重要であるかを正確に理解しようとしました。私のテストはWindows Server 2016で行われました。これらは適切であることがわかりました。
以下の値:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\[Startup|Shutdown]\0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\[Startup|Shutdown]\0\0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\[Startup|Shutdown]\0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\[Startup|Shutdown]\0\0
ディレクトリ:
\Windows\system32\GroupPolicy\Machine\Scripts\Startup
\Windows\system32\GroupPolicy\Machine\Scripts\Shutdown
Windowsは、これらのディレクトリをスクリプトの作業ディレクトリとして使用します。スタートアップ/シャットダウンスクリプトをそこに保持していなくても、これらのディレクトリが存在している必要があります。
他にgpeditは重要ではないようです。これには、多くのレジストリエントリと他の回答で参照されている.iniファイルが含まれます。上記のキーの一部が不必要である可能性もありますが、テストの忍耐力を使い果たしました。
起動スクリプトはC:\ MyStartupScript.batにあるものとします。
次の2つの場所の両方にあるScriptと呼ばれる値がC:\ MyStartupScript.batに設定されたREG_SZレジストリエントリが必要です。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\Startup\0\0
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\System\Scripts\Startup\0\0
C:\ WINDOWS\system32\GroupPolicy\Machine\Scripts\Scripts.iniにも次のエントリが必要です。
[Startup]
0CmdLine=C:\MyStartupScript.bat
0Parameters=
シャットダウンスクリプトの場合は、同じ手順に従いますが、WordのすべてのインスタンスStartupをWordに置き換えますShutdown
編集:
他に2つのレジストリエントリが存在しない場合は、それらも作成する必要があるようです。
上記の両方のレジストリの場所にそれらを作成する必要があります。
最初のエントリはParametersと呼ばれるREG_SZエントリで、その値は空のままにできます。
2番目のエントリはExecTimeと呼ばれるREG_QWORDエントリであり、その値は 00 00 00 00 00 00 00 00 00 00 00 00 00 00 に設定されています。
Windows XPでは、REGコマンドはREG_QWORDエントリをレジストリに追加できません。
この制限を回避するには、たとえば、これらの行を追加するバッチファイルを使用します
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\Startup\0\0]
"ExecTime"=hex(b):00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
addQword.regというファイルに、次のコマンドを使用してファイルを実行します。
regedit /s addQword.reg
フランシスの回答の小さな更新。
Windows Server 2016の場合、HKLM\Software\Policies\Microsoft\Windows\System\Scripts
はHKLM\Software\Microsoft\Windows\CurrentVersion\Group Policy\Scripts
に移動しました
だから私は以下のレジストリキーをエクスポートすることでそれを機能させました:
HKLM\Software\Microsoft\Windows\CurrentVersion\Group Policy\Scripts HKLM\Software\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine
フランシスがコピーを提案したように
C:\ WINDOWS\SYSTEM32\GroupPolicy
ここでキーを追加できます:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\Shutdown
詳細については、こちらをご覧ください: http://en.kioskea.net/faq/3358-execute-a-script-a-startup-and-shutdown
キーをレジストリに追加するには、すべてのマシンで実行されるregファイルを作成する必要があります。
1つのサーバーでgpedit.mscを使用してシャットダウンスクリプトを作成し、レジストリキーをエクスポートして、ターゲットサーバーにインポートしました。次のキーを使用します。
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts]
以下のファイルをターゲットにコピーする必要もあります。
C:\ Windows\system32\GroupPolicy\Machine\Scripts\scripts.ini
Powershellスクリプトの場合は、代わりに次のファイルをコピーします。
C:\ Windows\system32\GroupPolicy\Machine\Scripts\psscripts.ini