1

このスクリプトは、元の完全なファイルからの約 200 ~ 300 のレジストリ ステートメントの一部にすぎません。各 reg add ステートメントに従ってすべてのレジストリ設定を設定します。ただし、このスクリプトを適用すると、明らかに何かまたはすべてが壊れる可能性があります。スクリプトは、Windows 2008 R2 サーバーに適用されます。元の声明

reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa" /v RestrictAnonymous /t REG_DWORD /d 1 /f

このスクリプトを適用する前に達成したいことは次のとおりです。 1. 各キーにクエリを実行して、キーが正しいデータで存在するかどうかを確認します 2. キーと正しいデータが存在する場合、アクションは必要ありません 3. キーもデータも存在しない場合、出力をファイルにリダイレクトします. 一致しないレジストリ キーと一緒に結果を表示したい 一致しないレジストリ キーのリダイレクトされた出力は、手動で確認するものになります。

以下は、私が要求しているデータを導き出す試みを表しています。私は多くの異なるスイッチ ( /f /d |(パイプ) with findstr) とリダイレクトをさまざまな方法で適用しましたが、すべてうまくいきませんでした。reg compare コマンドも確認しましたが、別のクライアントを使用してレジストリを比較していないため、適用できません。なんらかの理由で、スイッチとコマンドの組み合わせを希望どおりに動作させることができません。目的の出力が得られた場合、findstr正しく検証されていません。または、がfindstr正しく検証された場合、出力は表示されません。結果は論理的なステートメントのfindstrようですが、結果は正しく検証されていません
>> C:\Users\AIODUDE\Documents\results.csv

reg query"HKLM\Software\_reg_test" /v STIG_test | findstr /E "0"
if %ERRORLEVEL% EQU 0 echo I match >> C:\Users\AIODUDE\Documents\results.csv
if %ERRORLEVEL% NEQ 0 echo No match >> C:\Users\AIODUDE\Documents\results2.csv

このスクリプトには、約 200 ~ 300 の registry add ステートメントが含まれていることに注意してください。

::all reg add keys are only set to do not read during testing
::reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa" /v RestrictAnonymous /t REG_DWORD /d 1 /f

reg query "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa" /v RestrictAnonymous > D:\results.csv
if %ERRORLEVEL% EQU 0 echo I match >> D:\results.csv
if %ERRORLEVEL% NEQ 0 echo No match >> D:\results.csv


::reg add "HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\EventLog\Setup" /v MaxSize /t REG_DWORD /d 32768 /f

reg query "HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\EventLog\Setup" /v MaxSize >> D:\results.csv
if %ERRORLEVEL% EQU 0 echo I match >> D:\results.csv
if %ERRORLEVEL% NEQ 0 echo No match >> D:\results.csv


::reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer" /v AlwaysInstallElevated /t REG_DWORD /d 0 /f

reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer" /v AlwaysInstallElevated >> D:\results.csv
if %ERRORLEVEL% EQU 0 echo I match >> D:\results.csv
if %ERRORLEVEL% NEQ 0 echo No match >> D:\results.csv

pause

エンドロ -- コメント制限のため、こちらで回答させていただきました。あなたの声明は、これまでに必要なデータのほとんどを提供してくれます--ありがとう!. 私は何十ものさまざまな構造を試しました!はfindstr、私が必要とする正確なデータと一致します。以下の例は、キーが見つからない場合に出力をリダイレクトすることを除いて機能します。何百もの行を編集しやすくするために、set ステートメントを使用することにしました。

set _results=C:\Users\AIODUDE\Documents\xresultsd.txt

set _NEQ=%_results% 2>&1 && echo success || echo FAIL >> %_results%

set _EQU=%_results% 2>&1 && echo success || echo FAIL >> %_results%

この例は適切です 一致する場合、出力は次のように述べています (一致するので、このキーは適切であり、それ以上のアクションはありません)。

reg query "HKLM\Software\_reg_test" /f STIG_test /e >>%_results%
reg query "HKLM\Software\_reg_test" /v STIG_test | findstr "0"
if %ERRORLEVEL% NEQ 0 echo No match >>%_NEQ%
if %ERRORLEVEL% EQU 0 echo I match >>%_EQU%

この例には一致しないデータ値があります アクションが必要です。

REG Query "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa" /f RestrictAnonymous /e >>%_results%
reg query "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa" /v RestrictAnonymous | findstr "1"
if %ERRORLEVEL% NEQ 0 echo No match >>%_NEQ%
if %ERRORLEVEL% EQU 0 echo I match >>%_EQU%

この例では、最初の reg クエリ ステートメントで特定のキーのみを検索し、キーとデータ値を出力します。ただし、正しい値がどうあるべきかを識別していないため...値は 0 である必要があります。

この例のレジストリ キーが見つかりません対処が必要です。

reg query "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa" /f LmCompatibilityLevel /e >>%_results%
reg query "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa" /v LmCompatibilityLevel | findstr "5"
if %ERRORLEVEL% NEQ 0 echo No match >>%_NEQ%
if %ERRORLEVEL% EQU 0 echo I match >>%_EQU%

したがって、findstr(追加または変更する必要がある特定のデータを表示します)、すべてのステートメントから印刷できる場合は理想的であり、検索と編集を一致しない値データのみに制限し、キーがまだ存在しない場合.

4

1 に答える 1