about_PowerShell_exe

간단한 설명

명령줄 인터페이스를 powershell.exe 사용하는 방법을 설명합니다. 명령줄 매개 변수를 표시하고 구문을 설명합니다.

자세한 설명

PowerShell 7의 명령줄 옵션에 대한 자세한 내용은 about_Pwsh 참조하세요.

구문

PowerShell[.exe]
    [-PSConsoleFile <file> | -Version <version>]
    [-NoLogo]
    [-NoExit]
    [-Sta]
    [-Mta]
    [-NoProfile]
    [-NonInteractive]
    [-InputFormat {Text | XML}]
    [-OutputFormat {Text | XML}]
    [-WindowStyle <style>]
    [-EncodedArguments <Base64EncodedArguments>]
    [-EncodedCommand <Base64EncodedCommand>]
    [-ConfigurationName <string>]
    [-File - | <filePath> <args>]
    [-ExecutionPolicy <ExecutionPolicy>]
    [-Command - | { <script-block> [-args <arg-array>] }
                | { <string> [<CommandParameters>] } ]

PowerShell[.exe] -Help | -? | /?

매개 변수

-Command

지정된 명령(및 매개 변수)을 PowerShell 명령 프롬프트에 입력된 것처럼 실행한 다음 매개 변수를 지정하지 않으면 NoExit 종료합니다.

명령은 스크립트 블록 또는 문자열일 -수 있습니다. 명령-면 표준 입력에서 명령 텍스트를 읽습니다.

Command 매개 변수는 Command에 전달된 값을 ScriptBlock 형식으로 인식할 수 있는 경우에만 실행을 위한 스크립트 블록을 허용합니다. 이는 다른 PowerShell 호스트에서 실행하는 powershell.exe 경우에만 가능합니다. ScriptBlock 형식은 전달되기 전에 기존 변수에 포함되거나, 식에서 반환되거나, PowerShell 호스트에서 중괄호({})로 묶인 리터럴 스크립트 블록으로 구문 분석될 powershell.exe 있습니다.

powershell -Command {Get-WinEvent -LogName security}

에서는 cmd.exe스크립트 블록(또는 ScriptBlock 형식)과 같은 항목이 없으므로 Command전달된 값은 항상 문자열이 됩니다. 문자열 내부에 스크립트 블록을 작성할 수 있지만, 실행되지 않고 정확히 일반 PowerShell 프롬프트에 입력한 것처럼 동작하여 스크립트 블록의 콘텐츠를 다시 사용자에게 인쇄합니다.

명령에 전달된 문자열은 여전히 PowerShell 코드로 실행되므로 스크립트 블록 중괄호는 처음에 실행할 cmd.exe때 필요하지 않은 경우가 많습니다. 문자열 내에 정의된 인라인 스크립트 블록을 실행하기 위해 호출 연산&자를 사용할 수 있습니다.

powershell.exe -Command "& {Get-WinEvent -LogName security}"

명령 값이 문자열인 경우 다음의 모든 인수는 실행할 명령의 일부로 해석되기 때문에 명령이 pwsh의 마지막 매개 변수여야 합니다.

기존 PowerShell 세션 내에서 호출하면 결과는 라이브 개체가 아닌 역직렬화된 XML 개체로 부모 셸에 반환됩니다. 다른 셸의 경우 결과가 문자열로 반환됩니다.

명령-면 표준 입력에서 명령 텍스트를 읽습니다. 표준 입력과 함께 Command 매개 변수를 사용하는 경우 표준 입력을 리디렉션해야 합니다. 예시:

@'
"in"

"hi" |
  % { "$_ there" }

"out"
'@ | powershell -NoProfile -Command -

이 예제는 다음과 같은 출력을 생성합니다.

in
hi there
out

프로세스 종료 코드는 스크립트 블록 내에서 마지막으로 실행된 명령의 상태 의해 결정됩니다. 종료 코드는 0 시기 $?$true 또는 1 시기 $? 입니다 $false. 마지막 명령이 외부 프로그램 또는 명시적으로 이외의 종료 코드를 01설정하는 PowerShell 스크립트인 경우 해당 종료 코드는 프로세스 종료 코드로 1 변환됩니다. 특정 종료 코드를 유지하려면 명령 문자열 또는 스크립트 블록에 추가 exit $LASTEXITCODE 합니다.

자세한 내용은 about_Automatic_Variables 참조 $LASTEXITCODE하세요.

마찬가지로, 값 1은 스크립트 종료(runspace-terminating) 오류(예: a throw 또는 -ErrorAction Stop,)가 발생하거나 Ctrl+C실행이 중단되는 경우 반환됩니다.

-ConfigurationName <문자열>

PowerShell이 실행되는 구성 엔드포인트를 지정합니다. 기본 PowerShell 원격 엔드포인트 또는 특정 사용자 역할 기능이 있는 사용자 지정 엔드포인트를 포함하여 로컬 컴퓨터에 등록된 모든 엔드포인트일 수 있습니다.

-EncodedArguments <Base64EncodedArguments>

Base64로 인코딩된 문자열 버전 명령 인수를 허용합니다. 이 매개 변수를 사용하여 복잡한 중첩 따옴표가 필요한 인수를 제출합니다. Base64 표현은 UTF-16LE로 인코딩된 문자열이어야 합니다.

-EncodedCommand <Base64EncodedCommand>

명령의 base-64로 인코딩된 문자열 버전을 허용합니다. 이 매개 변수를 사용하여 복잡한 따옴표 또는 중괄호가 필요한 명령을 PowerShell에 제출합니다. 문자열은 UTF-16LE 문자 인코딩을 사용하여 형식을 지정해야 합니다.

-ExecutionPolicy <ExecutionPolicy>

현재 세션에 대한 기본 실행 정책을 설정하고 환경 변수에 $env:PSExecutionPolicyPreference 저장합니다. 이 매개 변수는 레지스트리에 설정된 PowerShell 실행 정책을 변경하지 않습니다. 유효한 값 목록을 포함하여 PowerShell 실행 정책에 대한 자세한 내용은 about_Execution_Policies 참조하세요.

-File - | <Filepath><Args>

File-면 명령 텍스트가 표준 입력에서 읽습니다. 리디렉션된 표준 입력 없이 실행 powershell -File - 은 일반 세션을 시작합니다. 이는 File 매개 변수를 전혀 지정하지 않는 것과 같습니다.

파일이 파일 경로인 경우 스크립트는 새 세션의 로컬 범위("점 소스")에서 실행되므로 스크립트가 만드는 함수와 변수를 해당 새 세션에서 사용할 수 있습니다. 스크립트 파일 경로 및 매개 변수를 입력합니다. 파일 은 명령의 마지막 매개 변수여야 합니다. File 매개 변수 후에 입력된 모든 값은 스크립트 파일 경로 및 해당 스크립트에 전달된 매개 변수로 해석됩니다.

스크립트에 전달된 매개 변수는 현재 셸에서 해석한 후 리터럴 문자열로 전달됩니다. 예를 들어 cmd.exe 환경 변수 값을 전달하려는 경우 cmd.exe 구문을 사용합니다.powershell.exe -File .\test.ps1 -TestParam %windir%

반면, cmd.exe 실행 powershell.exe -File .\test.ps1 -TestParam $env:windir하면 현재 cmd.exe 셸에 특별한 의미가 없으므로 스크립트가 리터럴 문자열 $env:windir 을 수신합니다. 환경 변수 참조의 스타일은 $env:windir PowerShell 코드로 해석되므로 Command 매개 변수 내에서 사용할 수 있습니다.

마찬가지로 Batch 스크립트에서 동일한 명령을 실행하려는 경우 현재 실행 디렉터리를 powershell.exe -File %~dp0test.ps1 -TestParam %windir%대신 사용 %~dp0.\ 하거나 $PSScriptRoot나타냅니다. 대신 사용한 .\test.ps1경우 리터럴 경로를 찾을 수 없으므로 PowerShell에서 오류가 발생합니다. .\test.ps1

File 값이 filepath인 경우 File매개 변수 이름 뒤에 입력된 문자는 스크립트 파일 경로와 스크립트 매개 변수로 해석되기 때문에 파일은 명령의 마지막 매개 변수여야 합니다.

File 매개 변수 값에 스크립트 매개 변수 및 값을 포함할 수 있습니다. 예: -File .\Get-Script.ps1 -Domain Central

일반적으로 스크립트의 스위치 매개 변수는 포함되거나 생략됩니다. 예를 들어 다음 명령은 스크립트 파일의 All 매개 변수를 Get-Script.ps1 사용합니다. -File .\Get-Script.ps1 -All

드물게 매개 변수에 대한 부울 값을 제공해야 할 수 있습니다. 이러한 방식으로 스크립트를 실행할 때 스위치 매개 변수에 대한 명시적 부울 값을 전달할 수 없습니다. 이 제한 사항은 PowerShell 6(pwsh.exe)에서 제거되었습니다.

참고 항목

File 매개 변수는 인수 값 배열이 예상되는 매개 변수를 사용하여 스크립트를 지원할 수 없습니다. 아쉽게도 네이티브 명령이 인수 값을 가져오는 방법에 대한 제한 사항입니다. 네이티브 실행 파일(예: powershell 또는 pwsh)을 호출할 때 배열로 수행할 작업을 알 수 없으므로 문자열로 전달됩니다.

스크립트 파일이 명령으로 exit 종료되면 프로세스 종료 코드가 명령과 함께 사용되는 숫자 인수로 exit 설정됩니다. 정상적인 종료를 사용하는 경우 종료 코드는 항상 0.입니다.

자세한 내용은 about_Automatic_Variables 참조 $LASTEXITCODE하세요.

-InputFormat {Text | XML}

PowerShell로 전송되는 데이터의 형식을 설명합니다. 유효한 값은 Text (텍스트 문자열) 또는 XML (직렬화된 CLIXML 형식)입니다.

-Mta

다중 스레드 아파트를 사용하여 PowerShell을 시작합니다. 이 매개 변수는 PowerShell 3.0에서 도입되었습니다. PowerShell 2.0에서는 MTA(다중 스레드 아파트)가 기본값입니다. PowerShell 3.0에서는 STA(단일 스레드 아파트)가 기본값입니다.

-NoExit

시작 명령을 실행한 후에는 종료되지 않습니다.

-NonInteractive

이 스위치는 사용자 입력이 필요하지 않은 세션을 만드는 데 사용됩니다. 이는 예약된 작업 또는 CI/CD 파이프라인에서 실행되는 스크립트에 유용합니다. 대화형 기능(예: Read-Host 확인 프롬프트)을 사용하려고 하면 문이 중단되는 대신 오류가 종료됩니다.

시작 시 저작권 배너를 숨깁니다.

-NoProfile

PowerShell 프로필을 로드하지 않습니다.

-OutputFormat {Text | XML}

PowerShell의 출력 형식을 지정하는 방법을 결정합니다. 유효한 값은 Text (텍스트 문자열) 또는 XML (직렬화된 CLIXML 형식)입니다.

-PSConsoleFile <FilePath>

지정된 PowerShell 콘솔 파일을 로드합니다. 콘솔 파일의 경로와 이름을 입력합니다. 콘솔 파일을 만들려면 PowerShell에서 Export-Console cmdlet을 사용합니다.

-Sta

단일 스레드 아파트를 사용하여 PowerShell을 시작합니다. Windows PowerShell 2.0에서는 MTA(다중 스레드 아파트)가 기본값입니다. Windows PowerShell 3.0에서는 STA(단일 스레드 아파트)가 기본값입니다.

-Version <PowerShell 버전>

지정된 버전의 PowerShell을 시작합니다. 유효한 값은 2.0 및 3.0입니다. 지정한 버전이 시스템에 설치되어 있어야 합니다. Windows PowerShell 3.0이 컴퓨터에 설치된 경우 "3.0"이 기본 버전입니다. 그렇지 않으면 "2.0"이 기본 버전입니다. 자세한 내용은 PowerShell 설치를 참조하세요.

-WindowStyle <창 스타일>

세션의 창 스타일을 설정합니다. 유효한 값은 Normal, Minimized, MaximizedHidden입니다.

-도움말-?/?

에 대한 PowerShell.exe도움말을 표시합니다. PowerShell 세션에서 명령을 입력하는 PowerShell.exe 경우 명령 매개 변수 앞에 슬래시(-)가 아닌 하이픈(/)을 추가합니다. 에서 하이픈 또는 슬래시를 사용할 수 있습니다 cmd.exe.

REMARKS

문제 해결 참고: PowerShell 2.0에서 PowerShell 콘솔에서 일부 프로그램을 시작하면 0xc0000142 LastExitCode실패합니다.

예제

# Create a new PowerShell session and load a saved console file
PowerShell -PSConsoleFile sqlsnapin.psc1

# Create a new PowerShell V2 session with text input, XML output, and no logo
PowerShell -Version 2.0 -NoLogo -InputFormat text -OutputFormat XML

# Execute a PowerShell Command in a session
PowerShell -Command "Get-EventLog -LogName security"

# Run a script block in a session
PowerShell -Command {Get-EventLog -LogName security}

# An alternate way to run a command in a new session
PowerShell -Command "& {Get-EventLog -LogName security}"

# To use the -EncodedCommand parameter:
$command = "dir 'c:\program files' "
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
powershell.exe -encodedCommand $encodedCommand