ค้นหาเว็บไซต์

Invoke-Expression (Microsoft.PowerShell.Utility)


Invoke-Expression

โมดูล :
Microsoft.PowerShell.Utility

รันคำสั่งหรือนิพจน์บนเครื่องคอมพิวเตอร์

ไวยากรณ์

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

คำอธิบาย

Invoke-Expression cmdlet ประเมินหรือรันสตริงที่ระบุเป็นคำสั่งและส่งกลับผลลัพธ์ของนิพจน์หรือคำสั่ง หากไม่มี Inrigger-Expression สตริงที่ส่งที่บรรทัดคำสั่งจะถูกส่งกลับ (สะท้อน) โดยไม่มีการเปลี่ยนแปลง

นิพจน์ได้รับการประเมินและรันในขอบเขตปัจจุบัน สำหรับข้อมูลเพิ่มเติม โปรดดูที่ about_Scopes

คำเตือน

ใช้ความระมัดระวังตามสมควรเมื่อใช้ cmdlet Inrigger-Expression ในสคริปต์ เมื่อใช้ Inrigger-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
...

ตัวอย่างนี้สาธิตการใช้ Inrigger-Expression เพื่อประเมินนิพจน์ หากไม่มี Inrigger-Expression นิพจน์จะถูกพิมพ์ แต่จะไม่ได้รับการประเมิน

คำสั่งแรกกำหนดค่า Get-Process (สตริง) ให้กับตัวแปร $Command

คำสั่งที่สองแสดงผลของการพิมพ์ชื่อตัวแปรที่บรรทัดคำสั่ง PowerShell สะท้อนสตริง

คำสั่งที่สามใช้ Inrigger-Expression เพื่อประเมินสตริง

ตัวอย่างที่ 2: เรียกใช้สคริปต์บนเครื่องคอมพิวเตอร์

Invoke-Expression -Command "C:\ps-test\testscript.ps1"
"C:\ps-test\testscript.ps1" | Invoke-Expression

คำสั่งเหล่านี้ใช้ Inrigger-Expression เพื่อเรียกใช้สคริปต์ TestScript.ps1 บนเครื่องคอมพิวเตอร์ ทั้งสองคำสั่งเทียบเท่ากัน ขั้นแรกใช้พารามิเตอร์ Command เพื่อระบุคำสั่งที่จะรัน ส่วนที่สองใช้ตัวดำเนินการไปป์ไลน์ (|) เพื่อส่งสตริงคำสั่งไปที่ Inrigger-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 จะพยายามเรียกใช้เอาต์พุตพร้อมกับโค้ดและข้อผิดพลาดจะเกิดขึ้น

พารามิเตอร์

-Command

ระบุคำสั่งหรือนิพจน์ที่จะรัน พิมพ์คำสั่งหรือนิพจน์หรือป้อนตัวแปรที่มีคำสั่งหรือนิพจน์ จำเป็นต้องมีพารามิเตอร์ Command

พิมพ์ :

String

ตำแหน่ง:

0

ค่าเริ่มต้น:

None

ที่จำเป็น:

True

ยอมรับอินพุตไปป์ไลน์:

True

ยอมรับอักขระตัวแทน:

False

อินพุต

สตริง

คุณสามารถไปป์สตริงที่แสดงถึงนิพจน์เพื่อเรียกใช้ cmdlet นี้ ใช้ตัวแปรอัตโนมัติ $Input เพื่อแสดงวัตถุอินพุตในคำสั่ง

PSObject

คุณสามารถไปป์วัตถุที่แสดงถึงนิพจน์เพื่อเรียกใช้ cmdlet นี้ ใช้ตัวแปรอัตโนมัติ $Input เพื่อแสดงวัตถุอินพุตในคำสั่ง

เอาท์พุต

ไม่มี

cmdlet นี้ไม่ส่งคืนเอาต์พุตของตัวเอง แต่คำสั่งที่เรียกใช้อาจส่งคืนเอาต์พุต

หมายเหตุ

PowerShell มีนามแฝงต่อไปนี้สำหรับ Inrigger-Expression:

  • ทุกแพลตฟอร์ม:

      iex

ในกรณีส่วนใหญ่ คุณจะเรียกใช้นิพจน์โดยใช้ตัวดำเนินการเรียกของ PowerShell และได้ผลลัพธ์เดียวกัน โอเปอเรเตอร์การโทรเป็นวิธีที่ปลอดภัยกว่า สำหรับข้อมูลเพิ่มเติม โปรดดูที่ about_Operators

บทความที่เกี่ยวข้อง