Skrip ini hanya sebagian dari sekitar 200-300 pernyataan registri dari file lengkap aslinya. Ini menetapkan semua pengaturan registri sesuai setiap pernyataan reg add. Namun, menerapkan skrip ini jelas dapat merusak sesuatu atau segalanya. Skrip akan diterapkan pada server Windows 2008 R2. Pernyataan asli
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa" /v RestrictAnonymous /t REG_DWORD /d 1 /f
Apa yang ingin saya capai sebelum menerapkan skrip ini adalah: 1. Kueri setiap kunci untuk memeriksa apakah kunci ada dengan data yang benar 2. Jika kunci dan data yang benar ada, tidak diperlukan tindakan 3. Jika kunci atau data ada, arahkan output ke file a . Saya ingin hasilnya ditampilkan bersama dengan kunci registri yang tidak cocok. Output yang dialihkan untuk kunci registri yang tidak cocok adalah yang akan saya tinjau secara manual.
Berikut ini merupakan upaya saya untuk mendapatkan data yang saya minta. Saya telah menerapkan banyak sakelar berbeda (/f /d |
(pipa) dengan findstr
) dan pengalihan dalam berbagai cara, semuanya tidak berhasil. Saya juga meninjau perintah reg bandingkan tetapi tidak berlaku karena saya tidak menggunakan klien lain untuk membandingkan registri. Untuk beberapa alasan, saya tidak dapat membuat kombinasi sakelar dan perintah berfungsi sesuai keinginan. Jika saya mendapatkan keluaran yang diinginkan, findstr
tidak divalidasi dengan benar. Atau, jika findstr
memvalidasi dengan benar, output tidak ditampilkan. Hasil findstr
tampaknya merupakan pernyataan logis tetapi hasilnya tidak divalidasi dengan benar
mis. >> 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
Ingat, skrip ini memiliki sekitar 200-300 pernyataan penambahan registri.
::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
Endoro--Saya menjawab di sini karena keterbatasan komentar. Pernyataan Anda memberi saya sebagian besar data yang saya perlukan sejauh ini--terima kasih untuk itu!. Saya telah mencoba lusinan konstruksi yang berbeda! findstr
cocok dengan data yang saya butuhkan. Contoh di bawah ini berfungsi dengan pengecualian mengarahkan output jika kuncinya tidak ditemukan. Saya memutuskan untuk menggunakan pernyataan set untuk membuat pengeditan ratusan baris menjadi lebih mudah:
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%
CONTOH INI BAIK Jika cocok, outputnya menyatakan (Saya cocok--jadi kunci ini bagus dan tidak ada tindakan lebih lanjut).
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%
CONTOH INI MEMILIKI VLAUE DATA YANG TIDAK COCOK Diperlukan tindakan.
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%
Dalam contoh ini, pernyataan kueri reg pertama hanya mencari kunci tertentu dan mencetak kunci serta nilai data. Namun, ia tidak mengidentifikasi nilai yang benar karena itu... Pernyataan kueri reg kedua mengidentifikasi nilai yang benar tetapi tidak mencetak nilai yang seharusnya (pernyataan ini memerlukan tindakan--dalam hal ini data kasus nilainya harus 0.
CONTOH KUNCI REGISTRY INI TIDAK DITEMUKAN Diperlukan tindakan.
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%
Jadi findstr
(menunjukkan data spesifik yang perlu saya tambahkan atau modifikasi), jika dapat mencetak dari semua pernyataan akan menjadi ideal dan membatasi pencarian dan pengeditan saya hanya pada data nilai yang tidak cocok dan jika kuncinya belum ada hadiah.