Windows PowerShell에는 사용자가 실행한 모든 명령을 기억하는 내장 기록(History) 기능이 있습니다. 일반적으로 활성 세션의 기록만 저장되는 것으로 알려져 있지만, 실제로는 그 이상의 정보를 보존하고 있습니다. 이 글에서는 PowerShell 명령 기록을 확인하는 방법과 이를 효율적으로 활용하는 다양한 팁을 소개합니다.
PowerShell 명령 기록을 확인하는 방법
기록 기능의 가장 큰 장점은 한 번 실행했던 명령을 다시 입력할 필요가 없다는 것입니다. 하지만 수백 개의 명령 사이를 일일이 넘겨가며 찾는 것은 비효율적입니다. 기록을 검색하거나 명령어 일부만 기억나는 경우에도 찾을 수 있다면 훨씬 편리할 것입니다. 아래 방법들을 따라 해 보세요.
- 키보드 단축키 활용
- 기록에서 앞뒤로 검색하기
- 현재 세션의 전체 기록 보기
- 기록에서 특정 명령 실행하기
- 기록 내에서 검색하기
마지막으로 PowerShell 기록을 삭제, 내보내기, 가져오기 하는 방법까지 설명합니다. 반복적으로 동일한 명령을 실행해야 하는 경우 매우 유용합니다.
1] 키보드 단축키 활용
Windows를 한동안 사용해 왔다면 명령 프롬프트(Command Prompt)를 사용해 본 적이 있을 것입니다. 위쪽·아래쪽 화살표 키를 누르면 실행했던 명령을 앞뒤로 탐색할 수 있는데, PowerShell에서도 동일하게 작동합니다. 여기에 흥미로운 팁이 하나 더 있습니다. 명령어의 일부만 기억나는 경우 다음과 같이 검색할 수 있습니다.
- 기억나는 명령어의 일부를 입력합니다.
- F8 키를 누르고 원하는 명령을 찾을 때까지 계속 누릅니다.
- 검색어는 형광 녹색으로 강조 표시되며, 뒤에 나머지 명령이 함께 표시됩니다.
단점은 검색어가 반드시 명령어의 시작 부분이어야 한다는 점입니다.
2] 기록에서 앞뒤로 검색하기
기록을 앞쪽 또는 뒤쪽 방향으로 검색하려면 Ctrl + R과 Ctrl + S 단축키를 사용하세요. 전자는 과거 기록을 거슬러 올라가며 검색하고, 후자는 최신 방향으로 검색합니다. 단축키를 누르면 화면 하단에 (bck-i-search 또는 fwd-i-search) 프롬프트가 나타납니다. 검색할 텍스트를 입력하면 명령어 중간에 포함된 문자열이라도 찾아냅니다. 앞서 소개한 F8 방식보다 훨씬 강력한 검색 기능입니다.
3] 현재 세션의 전체 명령 기록 보기
History라고 입력하고 Enter 키를 누르면 현재 세션에서 실행한 모든 명령 목록을 볼 수 있습니다. 화살표 키로 이전 세션의 명령을 불러올 수는 있지만, History 명령 출력에는 이전 세션의 기록이 표시되지 않습니다. 참고로 "H" 키만 입력하고 Enter를 눌러도 명령 기록이 표시되는데, 이는 History 명령의 축약형입니다.
4] 기록에서 특정 명령 실행하기
History 명령의 출력 결과를 보면 각 명령 옆에 ID가 표시됩니다. 목록에서 특정 명령을 바로 실행하려면 Invoke-History cmdlet을 사용하면 됩니다.
- 실행하려는 명령의 ID를 확인합니다.
- Invoke-History <ID> 형식으로 입력합니다. <ID> 부분에 실제 숫자를 넣으세요.
- Enter 키를 누르면 해당 기록의 명령이 즉시 실행됩니다.
5] 기록 내에서 검색하기
명령 기록 내에서 검색하는 가장 쉬운 방법은 History 출력 결과에 Select-String을 조합하는 것입니다.
- 아래 명령을 입력하고, "Get." 부분을 원하는 검색어로 바꿉니다.
- Get-History | Select-String -Pattern "Get."
- 검색 조건과 일치하는 모든 명령이 표시됩니다.
결과와 함께 ID도 출력되므로 Invoke-History 명령으로 해당 명령을 즉시 재실행할 수 있습니다.
PowerShell 기록 삭제, 내보내기, 가져오기
기록의 모든 명령을 삭제하려면 Clear-History 명령을 실행하면 됩니다. 단, 이 명령을 실행한 후에도 위·아래 화살표 키로는 여전히 이전 명령에 접근할 수 있다는 점에 유의하세요.
모든 명령을 내보내려면 Export-Clixml 또는 Export-CSV cmdlet을 사용할 수 있습니다. 예시 명령은 다음과 같습니다.
Get-History | Export-Clixml -Path <경로>\PSHistorycommands.xml Get-History | Export-Csv -Path <경로>\PSHistorycommands.csv
내보낸 명령을 다른 세션 또는 새 세션으로 가져오려면 아래 명령을 사용하세요.
Add-History -InputObject (Import-Clixml -Path <경로>\PSHistorycommands.xml) Add-History -InputObject (Import-Csv -Path <경로>\PSHistorycommands.csv)
저장해 둔 CSV 또는 XML 파일은 언제든 열어서 PowerShell 명령 기록을 즉시 확인할 수 있습니다. 지금까지 살펴본 내용을 통해 PowerShell 명령 기록을 조회하고, 검색하고, 재실행하고, 파일로 백업했다가 다음 날 다시 불러오는 등 기록 기능을 최대한 활용하는 방법을 익히셨기를 바랍니다.