Bagaimana cara mengarahkan keluaran kueri reg batch dengan findtr?

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.


person Terrence    schedule 19.06.2013    source sumber


Jawaban (1)


coba seperti ini:

reg query "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa" /v RestrictAnonymous >results.csv 2>&1 && echo success || echo FAIL >> results.csv
type results.csv
person Endoro    schedule 19.06.2013
comment
Apa yang terjadi dengan postingan lanjutan saya? - person Terrence; 21.06.2013
comment
Endoro yang memberi saya kunci dan nilai tetapi saya memerlukan data spesifik dari findtr (atau apa pun yang bisa digunakan), sebaiknya diarahkan ke file. Apakah ada cara untuk memasukkan findtr (data yang tidak cocok secara spesifik) dalam pernyataan Anda? - person Terrence; 21.06.2013
comment
apa tepatnya yang harus dilakukan findstr? - person Endoro; 21.06.2013
comment
Endoro, lihat postingan saya yang telah diedit untuk jawaban atas pertanyaan Anda tentang findtr. - person Terrence; 24.06.2013
comment
Saya akan mencari ke dalam nanti. Sementara itu, Anda dapat membaca tentang pengalihan. - person Endoro; 24.06.2013