로컬 컴퓨터에서 명령 또는 식을 실행합니다.
구문
Invoke-Expression [-Command] <string> [<CommonParameters>]
설명
Invoke-Expression cmdlet은 지정된 문자열을 명령으로 평가하거나 실행하여 식 또는 명령의 결과를 반환합니다. Invoke-Expression을 사용하지 않는 경우 명령줄에 전송된 문자열이 변경되지 않고 반환(표시)됩니다.
매개 변수
-Command <string>
실행할 명령 또는 식을 지정합니다. 명령 또는 식을 입력하거나 명령 또는 식이 포함된 변수를 입력합니다. Command 매개 변수는 필수 사항입니다.
필수 여부 |
true |
위치 |
1 |
기본값 |
|
파이프라인 입력 적용 여부 |
true (ByValue) |
와일드카드 문자 적용 여부 |
false |
<CommonParameters>
이 cmdlet은 -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer, -OutVariable 등의 일반 매개 변수를 지원합니다. 자세한 내용은 about_Commonparameters.
입력 및 출력
입력 유형은 cmdlet으로 파이프할 수 있는 개체의 유형입니다. 반환 유형은 cmdlet에서 반환되는 개체의 유형입니다.
입력 |
System.String 또는 PSObject 명령을 나타내는 개체를 Invoke-Expression로 파이프할 수 있습니다. $input 자동 변수를 사용하여 명령에서 입력 개체를 나타낼 수 있습니다. |
출력 |
PSObject 호출된 명령을 통해 생성된 출력(Command 매개 변수의 값)을 반환합니다. |
참고
-- 식은 Windows PowerShell 명령과 같이 평가하여 결과를 생성할 수 있는 문입니다.
-- 스크립트에서 Invoke-Expression cmdlet을 사용할 때는 주의해야 합니다. Invoke-Expression을 사용하여 사용자가 입력하는 명령을 실행할 때는 실행 전에 명령을 실행해도 안전한지를 확인하십시오. 일반적으로는 자유 형태 입력을 허용하는 것보다 미리 정의된 입력 옵션을 사용하여 스크립트를 디자인하는 것이 가장 좋습니다.
예 1
C:\PS>$command = "Get-Process" C:\PS> $command Get-Process C:\PS> 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 변수에 할당합니다. 두 번째 명령은 명령줄에 변수 이름을 입력하는 경우의 효과를 보여 줍니다. 이렇게 하면 문자열이 표시됩니다. 세 번째 명령은 Invoke-Expression을 사용하여 문자열을 평가합니다.
예 2
C:\PS>invoke-expression -command "C:\ps-test\testscript.ps1" C:\PS> "C:\ps-test\testscript.ps1" | invoke-expression 설명 ----------- 이들 명령은 Invoke-Expression을 사용하여 로컬 컴퓨터에서 TestScript.ps1 스크립트를 실행합니다. 두 명령은 서로 동일합니다. 첫 번째 명령은 Command 매개 변수를 사용하여 실행할 명령을 지정하고, 두 번째 명령은 파이프라인 연산자(|)를 사용하여 명령 문자열을 Invoke-Expression으로 보냅니다.
예 3
C:\PS>$cmd = 'get-process | where {$_.cpu -gt 1000}' C:\PS> iex $command 설명 ----------- 이 예에서는 $cmd 변수에 저장된 명령 문자열을 실행합니다. 명령 문자열은 현재 개체를 나타내는 변수($_)를 포함하므로 작은따옴표로 묶여 있습니다. 이 문자열을 큰따옴표로 묶으면 $_ 변수는 $command 문자열에 저장되기 전에 해당 값으로 바뀝니다.
예 4
C:\PS>$cmdlet_name = "get-eventlog" C:\PS> $example_number = 1 C:\PS> $example_code = (get-help $cmdlet_name).examples.example[($example_number-1)].code C:\PS> invoke-expression $example_code 설명 ----------- 이 명령은 Get-EventLog cmdlet 도움말 항목에서 첫 번째 예를 검색하고 실행합니다. 다른 cmdlet의 예를 실행하려면 $cmdlet_name 변수 값을 cmdlet의 이름으로 변경합니다. 그리고 $example_number 변수를 실행할 예의 번호로 변경합니다. 예 번호가 잘못된 경우 명령이 실패합니다.
참고 항목