로컬 컴퓨터에서 명령 또는 식을 실행합니다.

구문

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 변수를 실행할 예의 번호로 변경합니다. 예 번호가 잘못된 경우 명령이 실패합니다.






참고 항목




목차