2013-06-19 42 views
1

該腳本只是原始完整文件中約200-300個註冊表語句的一部分。它根據每個reg add語句設置所有註冊表設置。但是,顯然應用此腳本可能會破壞某些內容或所有內容。 該腳本將應用於Windows 2008 R2服務器上。 聲明原文 REG ADD 「HKEY_LOCAL_MACHINE \系統\ CurrentControlSet \控制\ LSA」/ V RestrictAnonymous的/ T REG_DWORD/d 1/F如何使用findstr重定向批處理reg查詢輸出?

我想申請這個腳本之前做到的是: 1.查詢每個關鍵檢查密鑰是否存在正確的數據 2.如果存在密鑰和正確的數據,則不需要採取任何措施 3.如果存在密鑰或數據,則將輸出重定向至文件 a。我希望結果與不匹配的註冊表鍵一起顯示 不匹配的註冊表項的重定向輸出將是我手動查看的輸出。

以下代表我試圖派生我請求的數據。我用許多不同的方法應用了許多不同的開關(/ f/d |(管道)和findstr)和重定向,所有這些都沒有運氣。我還檢查了reg比較命令,但它不適用,因爲我沒有使用另一個客戶端來比較註冊表。出於某種原因,我無法獲得開關和命令的任何組合以按照需要工作。如果我得到所需的輸出,findstr不能正確驗證。或者,如果findstr驗證正確,則輸出不會顯示。 findstr結果似乎是合乎邏輯的陳述,但結果不能正確驗證。 >> C:\ Users \ AIODUDE \ Documents \ results.csv註冊查詢「HKLM \ Software_reg_test」/ v STIG_test |如果%ERRORLEVEL%NEQ 0回聲沒有匹配>> C:\ Users \ AIODUDE \ Documents如果%ERRORLEVEL%EQU 0回聲匹配>> C:\ Users \ AIODUDE \ Documents \ results.csv \ results2.csv

請記住,該腳本有大約200-300個註冊表添加語句。

::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 - 我在這裏回答是因爲評論限制。 您的聲明爲我提供了迄今爲止所需的大部分數據 - 謝謝!我已經嘗試了幾十種不同的結構! findstr匹配我需要的確切數據。如果找不到密鑰,下面的示例將重定向輸出。我決定用一組語句進行編輯數百行輕鬆了不少:

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% 

這個例子中具有非匹配數據VLAUE需要動作。

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查詢語句僅搜索特定鍵並打印出鍵和數據值。然而,它沒有標識什麼是正確的值,因此... 第二個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(顯示我,我需要添加或修改特定的數據),如果它可以從所有報表打印是很理想的,並限制我的搜索和編輯,只不匹配的值數據並且如果密鑰尚未存在。

回答

2

嘗試有點像這樣:

reg query "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa" /v RestrictAnonymous >results.csv 2>&1 && echo success || echo FAIL >> results.csv 
type results.csv 
+0

到底什麼發生在我的後續文章? – Terrence

+0

Endoro給我的關鍵和值,但我需要來自findstr(或任何可以使用)的具體數據,最好重定向到一個文件。有什麼辦法可以在你的聲明中包含findstr(數據不匹配)? – Terrence

+0

'findstr'應該做什麼? – Endoro

相關問題