운영체제 가운데 윈도우는 명령줄 인터페이스에 대한 의존도가 가장 낮은 편입니다. 실제로 대부분의 사용자는 명령줄을 한 번도 써 보지 않고도 지금까지 잘 지내왔습니다. 하지만 시스템 문제를 해결하거나 반복 작업을 자동화하려면, 어느 순간 명령줄을 다뤄야 할 때가 반드시 찾아옵니다.
그런데 막상 시작하려면 먼저 이해해야 할 중요한 차이점이 하나 있습니다. 바로 명령 프롬프트(Command Prompt)와 PowerShell의 차이입니다. 겉보기에는 비슷해 보이지만, 실제 활용 방식과 기능은 크게 다릅니다.
두 도구에 대해 꼭 알아야 할 내용을 정리해 보았습니다.
명령 프롬프트가 먼저였다
Windows NT 이후 버전에는 cmd.exe, 즉 명령 프롬프트라는 명령줄 해석기가 기본 탑재되어 있습니다. 사용자는 텍스트 기반 명령과 매개변수를 입력해 운영체제와 직접 소통할 수 있습니다.
다만 명령 프롬프트가 '최초'의 것은 아닙니다. 그 이전 운영체제(Windows 95, 98, ME)에는 COMMAND.COM이라 불리는 더 원시적인 명령줄 해석기, 일명 MS-DOS가 있었습니다. 명령 프롬프트는 구식이 된 MS-DOS 해석기를 크게 개선한 결과물이라고 할 수 있습니다.
윈도우가 그래픽 중심 환경으로 발전했음에도 명령줄은 결코 사라지지 않았습니다. 마우스 클릭만으로는 얻을 수 없는 강력함과 유연성(배치 스크립팅 등)을 제공하기 때문입니다. 숙련도에 따라서는 명령 프롬프트로 더 빠르게 작업을 처리할 수도 있습니다. 예를 들어 네트워크 진단(ipconfig, ping), 시스템 정보 확인(systeminfo), 파일 일괄 관리 같은 작업이 대표적입니다. 또한 GUI 접근 없이 명령줄만으로 복구해야 하는 상황에서 필수적으로 알아두면 좋은 기본 명령들이 여럿 있습니다.
명령 프롬프트를 처음 접한다면 초보자 가이드부터 살펴보는 것을 추천합니다. 생각보다 쉽고, 알아두면 분명히 값진 지식입니다.
일반 사용자에게는 명령 프롬프트로 충분하지만, 더 많은 것을 원하는 사람들도 있습니다. 마이크로소프트는 이러한 요구에 대한 답으로 PowerShell을 내놓았습니다.
PowerShell, 한 단계 더 발전하다
비유하자면 명령 프롬프트가 2004년형 모토로라 라즈르라면, PowerShell은 2015년형 모토로라 모토 X입니다. 기존에 하던 일은 물론 훨씬 더 많은 일을 할 수 있습니다. 세상 최고의 명령줄 도구는 아니더라도, 파워 유저를 만족시키기에 충분히 강력합니다.
PowerShell의 역사는 2002년 마이크로소프트가 'Monad'라는 코드명의 Microsoft Shell 개발을 시작하면서부터입니다. 사용자가 직접 확장할 수 있는 셸을 목표로 했던 Monad는 2005년 공개되었고, 2006년 PowerShell로 이름을 바꾼 뒤 운영체제 자체에 통합되었습니다.
그렇다면 이것이 실질적으로 무슨 의미일까요?
간단히 말해, PowerShell은 C# 프로그래밍 언어로 사용자 자신만의 명령과 스크립트를 만들 수 있게 해 줍니다. PowerShell과 C#은 모두 마이크로소프트의 .NET Framework와 통합되어 있어, 방대한 기존 함수와 도구를 활용해 적은 노력으로 더 나은 명령과 스크립트를 작성할 수 있습니다.
또한 원격 작업 실행, 백그라운드 작업, 작업 자동화, 명령 파이핑(pipe) 등 고급 기능을 갖추고 있어, 대규모 시스템 관리와 유지 보수 작업에서는 구식 명령 프롬프트보다 훨씬 적합한 선택입니다.
PowerShell을 써야 할까요? 일반 사용자라면 이런 화려한 기능이 굳이 필요 없습니다. 반면 관리자와 파워 유저라면 그 잠재력에 만족할 것입니다. 기본적인 PowerShell 명령 몇 가지부터 익혀보며 감을 잡아 보세요.
참고: PowerShell은 학습 곡선이 다소 있으므로, 처음부터 완벽히 이해하려 하지 않아도 됩니다.
Windows 10에서 강화된 PowerShell
PowerShell은 이미 유용하지만, Windows 10 출시와 함께 여러 가지 개선 사항을 갖추게 되었습니다. 기대할 수 있는 주요 변화는 다음과 같습니다.
PackageManagement
패키지 관리자는 다운로드·설치·삭제하는 소프트웨어를 체계적으로 관리하는 편리한 도구입니다. 웹사이트를 일일이 오갈 필요 없이 PackageManagement(구 OneGet) 안에서 패키지를 검색하고 설치할 수 있습니다. 다양한 저장소(repository)를 구독해 사용 가능한 패키지를 선택하는 방식입니다.
OneGet은 엄밀히 말해 Windows 8.1에서도 Windows Management Framework 5.0을 설치하면 사용할 수 있었지만, Windows 10부터는 시스템에 기본 통합됩니다.
SSH(Secure Shell) 지원
SSH는 원격 시스템 간 암호화 연결을 설정하는 데 오랫동안 표준으로 쓰여 온 프로토콜입니다. SSH 없이 데이터를 전송하면 외부에서 가로채기 쉽습니다.
그동안 윈도우에서 SSH를 사용하려면 PuTTY 같은 서드파티 솔루션이 필요했지만, PowerShell 팀이 윈도우 자체 SSH 지원 구현을 발표하면서 이 분야에서도 윈도우가 마침내 따라잡기 시작했습니다.
PowerShell 자체 기능 향상
버전 5.0에서는 클래스(class)와 열거형(enum), 새로운 기본 cmdlet, 기존 명령의 기능 확장, 콘솔의 구문 색상 표시 등 언어 자체가 크게 강화되었습니다. 자세한 내용은 마이크로소프트의 "What's New in PowerShell 5.0" 문서를 참고하시기 바랍니다.
정리: 무엇을 사용해야 할까?
이제 명령 프롬프트와 PowerShell의 차이가 좀 더 명확해졌기를 바랍니다. 여전히 헷갈린다면 간단하게 기억하면 됩니다. PowerShell은 파워 유저와 관리자를 위한 것이고, 명령 프롬프트는 그 외 모든 사용자에게 충분합니다. 사실 둘 다 몰라도 일상적인 컴퓨팅에는 아무 지장이 없습니다.
PowerShell에 대해 어떻게 생각하시나요? 마이크로소프트는 올바른 방향으로 가고 있을까요? 댓글로 의견을 나눠주세요!
이미지 출처: Kaleb Fulgham via Flickr, Andrea Danti via Shutterstock