Invoke-Expression
로컬 컴퓨터에서 명령 또는 식을 실행합니다.
구문
Default (기본값)
Invoke-Expression
[-Command] <String>
[<CommonParameters>]
Description
Invoke-Expression cmdlet은 지정된 문자열을 명령으로 평가하거나 실행하고 식 또는 명령의 결과를 반환합니다.
Invoke-Expression없으면 명령줄에 제출된 문자열이 변경되지 않고 반환됩니다(에코됨).
식은 현재 범위에서 평가되고 실행됩니다. 더 많은 정보를 보려면 about_Scopes를 참조하세요.
주의
스크립트에서 Invoke-Expression cmdlet을 사용할 때 적절한 예방 조치를 취합니다.
Invoke-Expression 사용하여 사용자가 입력하는 명령을 실행할 때 명령을 실행하기 전에 명령을 실행해도 안전한지 확인합니다. 일반적으로 자유형 입력을 허용하는 대신 미리 정의된 입력 옵션을 사용하여 스크립트를 디자인하는 것이 가장 좋습니다.
예제
예제 1: 식 평가
$Command = "Get-Process"
$Command
Get-Process
Invoke-Expression $Command
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
296 4 1572 1956 20 0.53 1348 AdtAgent
270 6 1328 800 34 0.06 2396 alg
67 2 620 484 20 0.22 716 ati2evxx
1060 15 12904 11840 74 11.48 892 CcmExec
1400 33 25280 37544 223 38.44 2564 communicator
...
이 예제에서는 Invoke-Expression 사용하여 식을 평가하는 방법을 보여 줍니다.
Invoke-Expression없으면 식이 인쇄되지만 계산되지는 않습니다.
첫 번째 명령은 Get-Process 변수에 $Command(문자열) 값을 할당합니다.
두 번째 명령은 명령줄에 변수 이름을 입력하는 효과를 보여줍니다. PowerShell은 문자열을 에코합니다.
세 번째 명령은 Invoke-Expression 사용하여 문자열을 평가합니다.
예제 2: 로컬 컴퓨터에서 스크립트 실행
Invoke-Expression -Command "C:\ps-test\testscript.ps1"
"C:\ps-test\testscript.ps1" | Invoke-Expression
이러한 명령은 Invoke-Expression 사용하여 로컬 컴퓨터에서 스크립트 TestScript.ps1실행합니다. 두 명령은 동일합니다. 첫 번째 명령은 Command 매개 변수를 사용하여 실행할 명령을 지정합니다.
두 번째는 파이프라인 연산자(|)를 사용하여 명령 문자열을 Invoke-Expression보냅니다.
예제 3: 변수에서 명령 실행
$Command = 'Get-Process | where {$_.CPU -gt 1000}'
Invoke-Expression $Command
이 예제에서는 $Command 변수에 저장된 명령 문자열을 실행합니다.
명령 문자열은 현재 개체를 나타내는 변수 $_포함하므로 작은따옴표로 묶습니다. 큰따옴표로 묶인 경우 $_ 변수는 $Command 변수에 저장되기 전에 해당 값으로 바뀝 있습니다.
예제 4: cmdlet 도움말 예제 가져오기 및 실행
$Cmdlet_name = "Get-ComputerInfo"
$Example_number = 1
$Example_code = (Get-Help $Cmdlet_name).examples.example[($Example_number-1)].code
Invoke-Expression $Example_code
이 명령은 Get-EventLog cmdlet 도움말 항목의 첫 번째 예제를 검색하고 실행합니다.
다른 cmdlet의 예를 실행하려면 $Cmdlet_name 변수의 값을 cmdlet의 이름으로 변경합니다. 또한 $Example_number 변수를 실행하려는 예제 번호로 변경합니다. 예제 번호가 잘못되면 명령이 실패합니다.
비고
도움말 파일의 예제 코드에 이 예제의 출력이 있으면 PowerShell에서 코드와 함께 출력을 실행하려고 하면 오류가 throw됩니다.
매개 변수
-Command
실행할 명령 또는 식을 지정합니다. 명령이나 식을 입력하거나 명령이나 식이 포함된 변수를 입력합니다. Command 매개 변수가 필요합니다.
매개 변수 속성
| 형식: | String |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | 0 |
| 필수: | True |
| 파이프라인의 값: | True |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
CommonParameters
이 cmdlet은 일반적인 매개 변수인 -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction 및 -WarningVariable 매개 변수를 지원합니다. 자세한 내용은 about_CommonParameters를 참조하세요.
입력
String
이 cmdlet에 호출할 식을 나타내는 문자열을 파이프할 수 있습니다.
$input 자동 변수를 사용하여 명령의 입력 개체를 나타냅니다.
PSObject
이 cmdlet에 호출할 식을 나타내는 개체를 파이프할 수 있습니다.
$input 자동 변수를 사용하여 명령의 입력 개체를 나타냅니다.
출력
None
이 cmdlet은 자체 출력을 반환하지 않지만 호출된 명령은 출력을 반환할 수 있습니다.
참고
PowerShell에는 Invoke-Expression에 대한 다음과 같은 별칭들이 포함되어 있습니다.
- 모든 플랫폼:
iex
대부분의 경우 PowerShell의 호출 연산자를 사용하여 식을 호출하고 동일한 결과를 얻을 수 있습니다. 호출 연산자는 더 안전한 방법입니다. 자세한 내용은, about_Operators참조하세요.