Invoke-Expression

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

Syntax

Invoke-Expression
      [-Command] <String>
      [<CommonParameters>]

Description

cmdlet은 Invoke-Expression 지정된 문자열을 명령으로 평가하거나 실행하고 식 또는 명령의 결과를 반환합니다. 없으면 Invoke-Expression명령줄에서 제출된 문자열이 변경되지 않고 반환됩니다(에코됨).

식은 현재 범위에서 평가되고 실행됩니다. 자세한 내용은 about_Scopes 참조하세요.

주의

스크립트에서 cmdlet을 Invoke-Expression 사용할 때 적절한 예방 조치를 취합니다. 사용자가 입력하는 명령을 실행하는 데 사용할 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

이러한 명령은 로컬 컴퓨터에서 스크립트 TestScript.ps1을 실행하는 데 사용합니다 Invoke-Expression . 두 명령은 동일합니다. 첫 번째 명령은 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

이 명령은 cmdlet 도움말 항목의 첫 번째 예제를 Get-EventLog 검색하고 실행합니다.

다른 cmdlet의 예제를 실행하려면 변수 값을 $Cmdlet_name cmdlet의 이름으로 변경합니다. 또한 변수를 $Example_number 실행하려는 예제 번호로 변경합니다. 예제 번호가 잘못되면 명령이 실패합니다.

참고 항목

도움말 파일의 예제 코드에 이 예제의 출력이 있으면 PowerShell에서 코드와 함께 출력을 실행하려고 하면 오류가 throw됩니다.

매개 변수

-Command

실행할 명령 또는 식을 지정합니다. 명령 또는 식을 입력하거나 명령 또는 식이 포함된 변수를 입력합니다. Command 매개 변수가 필요합니다.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

입력

String

이 cmdlet에 호출할 식을 나타내는 문자열을 파이프할 수 있습니다. 자동 변수를 $Input 사용하여 명령의 입력 개체를 나타냅니다.

PSObject

이 cmdlet에 호출할 식을 나타내는 개체를 파이프할 수 있습니다. 자동 변수를 $Input 사용하여 명령의 입력 개체를 나타냅니다.

출력

None

이 cmdlet은 자체 출력을 반환하지 않지만 호출된 명령은 출력을 반환할 수 있습니다.

참고

PowerShell에는 다음 별칭이 포함됩니다.Invoke-Expression

  • 모든 플랫폼:
    • iex

대부분의 경우 PowerShell의 호출 연산자를 사용하여 식을 호출하고 동일한 결과를 얻을 수 있습니다. 호출 연산자는 더 안전한 방법입니다. 자세한 내용은 about_Operators 참조하세요.