PowerShell은 마이크로소프트가 만든 가장 강력한 스크립팅 도구 중 하나입니다. 이번 글에서는 PWSH.exe가 정확히 무엇인지 살펴보고, 실무에서 자주 활용되는 PWSH 구문(옵션)을 예제와 함께 정리해 드립니다. 많은 분들이 Windows PowerShell을 사용해 보셨겠지만, PWSH는 이제 Windows, macOS, Linux에서 모두 동작하는 크로스 플랫폼 스크립팅 도구입니다. 다만 WSL(Windows Subsystem for Linux) 환경에서는 지원되지 않으며, PWSH를 로그인 셸로 설정하려고 하면 WSL이 불안정해질 수 있으니 주의해야 합니다.
PWSH.EXE란 무엇인가?

본격적으로 시작하기 전에 한 가지 짚고 넘어가겠습니다. PWSH.EXE는 PowerShell의 새로운 이름입니다. 버전 6부터는 'PowerShell Core'라는 이름으로 불리며, 기존에 Windows에 설치되어 있던 powershell.exe(버전 5.1)를 대체합니다. 그래서 Windows에서 PowerShell을 실행할 때마다 다음과 같은 메시지가 표시됩니다.
"새로운 크로스 플랫폼 PowerShell을 사용해 보세요. https://aka.ms/pscore6"
PowerShell과 PowerShell Core의 차이점에 대해 별도로 학습해 보는 것도 좋습니다.
현재 PowerShell은 버전 7까지 발전했으며, .NET Framework 대신 .NET Core 3를 기반으로 동작하는 등 버전 6에 비해 큰 변화가 있었습니다. 직접 사용해 보고 싶다면 Windows 10에 PowerShell 7.0을 설치하는 방법을 참고해 보세요.
주요 PWSH 구문
-File | -f
명령어를 미리 스크립트 파일로 작성해 두었다면 해당 파일을 입력으로 사용할 수 있습니다. 필요한 경우 파일에 인수(arguments)를 함께 전달할 수도 있습니다.
pwsh -File .\test.ps1 -TestParam $env:windir
-Command | -c
단일 명령어나 ScriptBlock({}로 묶인 함수 집합)을 실행할 때 사용합니다.
pwsh -Command {Get-WinEvent -LogName security}
또는 아래와 같이 여러 줄의 입력을 파이프로 넘겨 실행할 수도 있습니다.
@'
"in"
"hi" |
% { "$_ there" }
"out"
'@ | powershell -NoProfile -Command -
-EncodedCommand | -e | -ec
복잡한 따옴표나 중괄호를 포함한 명령어를 실행해야 할 때 유용한 옵션입니다. 명령 문자열을 Base64로 인코딩하여 전달합니다.
$command = 'dir "c:\program files" ' $bytes = [System.Text.Encoding]::Unicode.GetBytes($command) $encodedCommand = [Convert]::ToBase64String($bytes) pwsh -encodedcommand $encodedCommand
-Login | -l
Linux와 macOS에서 PowerShell을 로그인 셸로 시작합니다. /bin/sh를 통해 /etc/profile, ~/.profile 같은 로그인 프로필을 실행합니다. Windows에서는 적용되지 않습니다.
먼저 /etc/shells에 등록된 절대 경로를 확인한 후, chsh 유틸리티를 사용해 현재 사용자의 기본 셸을 pwsh로 변경할 수 있습니다.
chsh -s /usr/bin/pwsh
-SettingsFile | -settings
시스템 전역 설정 대신 특정 프로젝트의 로컬 설정을 우선 적용하고 싶다면 이 옵션으로 설정 파일 경로를 지정하면 됩니다. 시스템 전체 설정은 powershell.config.json 파일에 저장됩니다.
pwsh -SettingsFile c:\myproject\powershell.config.json
PWSH 구문 전체 목록
pwsh[.exe]
[[-File] <filePath> [args]]
[-Command { - | <script-block> [-args <arg-array>]
| <string> [<CommandParameters>] } ]
[-ConfigurationName <string>]
[-CustomPipeName <string>]
[-EncodedCommand <Base64EncodedCommand>]
[-ExecutionPolicy <ExecutionPolicy>]
[-InputFormat {Text | XML}]
[-Interactive]
[-Login]
[-MTA]
[-NoExit]
[-NoLogo]
[-NonInteractive]
[-NoProfile]
[-OutputFormat {Text | XML}]
[-SettingsFile <SettingsFilePath>]
[-STA]
[-Version]
[-WindowStyle <style>]
[-WorkingDirectory <directoryPath>]
pwsh[.exe] -h | -Help | -? | /?
더 자세한 내용이 필요하다면 docs.microsoft.com의 공식 문서를 참고하시기 바랍니다.