Windows 시스템에서는 리눅스 시스템과 다르게 shell(cmd) 사용 시 로그가 기록되지 않는다.

 

그래서 윈도우 내에서 CMD 로그를 기록할만한 방법을 찾아봤었는데,

 

명령 프롬포트 수동 저장

doskey 를 이용한 수동 저장 방법

doskey 를 이용하는 방법이다.

doskey /history > 경로\log.txt 명령어를 통해 지금까지 사용한 명령어를 경로\log.txt에 저장하는 방법이다.

사실 이 방법은 현재 프롬포트에서 사용한 로그를 프롬포트를 종료하기 전에 써야하는 번거로움이 있어 불편하다.

 

PowerShell 수동 저장

Get-History 를 이용한 수동 저장 방법

이 또한 위와 비슷하다. Get-History 는 해당 PowerShell에서 사용한 명령어들을 출력하는 명령어로, 이를 이용하여 파일 저장 위치를 지정하여 파일을 저장하는 방법이다.

 

즉 해당 명령어를 통해 배치 파일(스크립트)를 작성하여 로그를 기록하도록 한다.

 

자동화 배치파일 CMD

@echo off 

if "%AUTOEXEC%" EQU "1" goto :eof 

SET AUTOEXEC=1 

echo Loading macros. 

  

rem  remap exit command to save a copy of the command line history to a log before exiting. 

DOSKEY exit=(echo/ ^& echo **** %date% %time% ****) $g$g %USERPROFILE%\commands.log ^& doskey /history $g$g %USERPROFILE%\commands.log ^& ECHO Command history saved, exiting ^& exit $*

해당 스크립트를 작성하여 %USERPROFILE%\autoexec.bat  에 저장 후 자동으로 실행시키기 위해

regedit 을 이용하여 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor\AutoRun 에서 데이터를 삽입한다.

IF EXIST "%USERPROFILE%\autoexec.bat" (CALL "%USERPROFILE%\autoexec.bat")

 

자동 실행 레지스트리

이렇게 하면 %USERPROFILE% 에 로그가 기록됨을 확인 할 수 있다.

기록된 로그

컴퓨터를 재부팅 해도 자동으로 실행되면서 기록이 가능하니 때문에 자동으로 CMD 로그에 대해서는 저장 할 수 있다.

복사했습니다!