PowerShell เรียกใช้คำสั่ง | พารามิเตอร์ 18 อันดับแรกของการเรียกใช้คำสั่ง
ข้อมูลเบื้องต้นเกี่ยวกับคำสั่งเรียกใช้ PowerShell
Invivo-Command ใช้เพื่อเรียกใช้คำสั่งใด ๆ บนเครื่องคอมพิวเตอร์ท้องถิ่นหรือคอมพิวเตอร์ระยะไกลและส่งคืนเอาต์พุต ช่วยให้เราสามารถเขียนสคริปต์หรือบล็อกคำสั่งและเรียกใช้สคริปต์หรือบล็อกคำสั่งนั้นได้ มันจะส่งคืนผลลัพธ์ของการดำเนินการคำสั่ง คำสั่งนี้สามารถรันบนเครื่องหรือระยะไกลได้ ให้เราเข้าใจด้วยตัวอย่างพื้นฐาน ง่ายมากถ้าเรามีคำสั่งบางคำสั่ง {command1 command 2 commands 3} และเราต้องการดำเนินการและออกจากการดำเนินการ มากกว่าที่เราจะใช้ PowerShell Inrigg-Command ได้
ไวยากรณ์ของคำสั่งเรียกใช้ PowerShell
ดำเนินการคำสั่งด้านล่างแล้วคุณจะได้ผลลัพธ์เป็นไวยากรณ์และพารามิเตอร์ทั้งหมด เราแสดงไวยากรณ์ที่มีอยู่ทั้งหมดสำหรับ PowerShell Inrigg-Command ทุกไวยากรณ์จะถูกใช้สำหรับสถานการณ์เฉพาะ
ไวยากรณ์:
Get-Help Invoke-Command -fullด้านล่างนี้คือไวยากรณ์ที่เราได้รับหลังจากรันคำสั่งด้านบน
1. ด้วยการส่งอาร์กิวเมนต์ไปยังคอมพิวเตอร์ระยะไกล
Invoke-Command
[-ScriptBlock] <scriptblock>
[-NoNewScope]
[-InputObject <psobject>]
[-ArgumentList <list of arguments in object form>]
[<CommonParameters>]<แข็งแกร่ง>2. ด้วยการกำหนดชื่องาน
Invoke-Command
[[-Session] <PSSession[]>]
[-FilePath] <string>
[-ThrottleLimit <int>]
[-AsJob]
[-HideComputerName]
[-JobName <understandable user defined names>]
[-RemoteDebug] [-InputObject <psobject>]
[-ArgumentList <list of arguments in object form>]
[<CommonParameters>]<แข็งแกร่ง>3. การเรียกใช้คำสั่งในโหมดการแก้ไขจุดบกพร่องระยะไกล
Invoke-Command
[[-Session] <PSSession[]>]
[-ScriptBlock] <scriptblock>
[-ThrottleLimit <int>]
[-AsJob]
[-HideComputerName]
[-JobName <string>]
[-RemoteDebug]
[-InputObject <psobject>]
[-ArgumentList <list of arguments in object form>]
[<CommonParameters>]Invoke-Command
[[-ComputerName] <string[]>]
[-FilePath] <string>
[-Credential <pscredential>]
[-Port <int>] [-UseSSL]
[-ConfigurationName <string>]
[-ApplicationName <string>]
[-ThrottleLimit <int>]
[-AsJob]
[-InDisconnectedSession]
[-SessionName <string[]>]
[-HideComputerName]
[-JobName <string>]
[-SessionOption <PSSessionOption>]
[-Authentication {Default | Basic | Negotiate | NegotiateWithImplicitCredential | Credssp | Digest | Kerberos}]
[-EnableNetworkAccess]
[-RemoteDebug]
[-InputObject <psobject>]
[-ArgumentList <list of arguments in object form>]
[<CommonParameters>]Invoke-Command
[[-ComputerName] <string[]>]
[-ScriptBlock] <scriptblock>
[-Credential <pscredential>]
[-Port <port where remote computer is listening>]
[-UseSSL]
[-ConfigurationName <string>]
[-ApplicationName <string>]
[-ThrottleLimit <int>]
[-AsJob]
[-InDisconnectedSession]
[-SessionName <string[]>]
[-HideComputerName]
[-JobName <string>]
[-SessionOption <PSSessionOption>]
[-Authentication {Default | Basic | Negotiate | NegotiateWithImplicitCredential | Credssp | Digest | Kerberos}]
[-EnableNetworkAccess]
[-RemoteDebug]
[-InputObject <psobject>]
[-ArgumentList <list of arguments in object form>]
[-CertificateThumbprint <string>]
[<CommonParameters>]Invoke-Command
[[-ConnectionUri] <uri[]>]
[-ScriptBlock] <scriptblock>
[-Credential <pscredential>]
[-ConfigurationName <string>]
[-ThrottleLimit <int>]
[-AsJob]
[-InDisconnectedSession]
[-HideComputerName]
[-JobName <string>]
[-AllowRedirection]
[-SessionOption <PSSessionOption>]
[-Authentication {Default | Basic | Negotiate | NegotiateWithImplicitCredential | Credssp | Digest | Kerberos}]
[-EnableNetworkAccess]
[-RemoteDebug]
[-InputObject <psobject>]
[-ArgumentList <list of arguments in object form>]
[-CertificateThumbprint <string>]
[<CommonParameters>]Invoke-Command
[[-ConnectionUri] <uri[]>]
[-FilePath] <string>
[-Credential <pscredential>]
[-ConfigurationName <string>]
[-ThrottleLimit <int>]
[-AsJob]
[-InDisconnectedSession]
[-HideComputerName]
[-JobName <string>]
[-AllowRedirection]
[-SessionOption <PSSessionOption>]
[-Authentication {Default | Basic | Negotiate | NegotiateWithImplicitCredential | Credssp | Digest | Kerberos}]
[-EnableNetworkAccess]
[-RemoteDebug]
[-InputObject <psobject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]Invoke-Command
[-VMId] <guid[]>
[-ScriptBlock] <scriptblock>
-Credential <pscredential>
[-ConfigurationName <string>]
[-ThrottleLimit <int>]
[-AsJob]
[-HideComputerName]
[-RemoteDebug]
[-InputObject <psobject>]
[-ArgumentList <list of arguments in object form>]
[<CommonParameters>]Invoke-Command
[-ScriptBlock] <scriptblock>
-Credential <pscredential>
-VMName <string[]>
[-ConfigurationName <string>]
[-ThrottleLimit <int>]
[-AsJob]
[-HideComputerName]
[-RemoteDebug]
[-InputObject <psobject>]
[-ArgumentList <list of arguments in object form>]
[<CommonParameters>]Invoke-Command
[-VMId] <guid[]>
[-FilePath] <string>
-Credential <pscredential>
[-ConfigurationName <string>]
[-ThrottleLimit <int>]
[-AsJob]
[-HideComputerName]
[-RemoteDebug]
[-InputObject <psobject>]
[-ArgumentList <list of arguments in object form>]
[<CommonParameters>]Invoke-Command
[-FilePath] <path of the file>
-Credential <pscredential>
-VMName <string[]>
[-ConfigurationName <string>]
[-ThrottleLimit <int>]
[-AsJob]
[-HideComputerName]
[-RemoteDebug]
[-InputObject <psobject>]
[-ArgumentList <list of arguments in object form>]
[<CommonParameters>]Invoke-Command
-ScriptBlock <scriptblock>
-HostName <string[]>
[-Port <port number where remote computer is listening>]
[-AsJob]
[-HideComputerName]
[-UserName <string>]
[-KeyFilePath <string>]
[-SSHTransport {true}]
[-RemoteDebug]
[-InputObject <psobject>]
[-ArgumentList <list of arguments in object form>]
[-Subsystem <string>]
[<CommonParameters>]Invoke-Command
[-ScriptBlock] <scriptblock>
-ContainerId <string[]>
[-ConfigurationName <string>]
[-ThrottleLimit <int>]
[-AsJob]
[-HideComputerName]
[-JobName <string>]
[-RunAsAdministrator]
[-RemoteDebug]
[-InputObject <psobject>]
[-ArgumentList <list of arguments in object form>]
[<CommonParameters>]Invoke-Command
[-FilePath] <path of the file>
-ContainerId <string[]>
[-ConfigurationName <string>]
[-ThrottleLimit <int>]
[-AsJob]
[-HideComputerName]
[-JobName <string>]
[-RunAsAdministrator]
[-RemoteDebug]
[-InputObject <psobject>]
[-ArgumentList <list of arguments in object form>]
[<CommonParameters>]Invoke-Command
-ScriptBlock <scriptblock>
-SSHConnection <hashtable[]>
[-AsJob]
[-HideComputerName]
[-RemoteDebug]
[-InputObject <psobject>]
[-ArgumentList <list of arguments in object form>]
[<CommonParameters>]Invoke-Command
-FilePath <path of the file>
-HostName <string[]>
[-AsJob]
[-HideComputerName]
[-UserName <string>]
[-KeyFilePath <string>]
[-SSHTransport {true}]
[-RemoteDebug]
[-InputObject <psobject>]
[-ArgumentList <list of arguments in object form>]
[<CommonParameters>]Invoke-Command
-FilePath <path of the file>
-SSHConnection <hashtable[]>
[-AsJob]
[-HideComputerName]
[-RemoteDebug]
[-InputObject <psobject>]
[-ArgumentList <list of arguments in object form>]
[<CommonParameters>]พารามิเตอร์ 18 อันดับแรกของ PowerShell Intake-Command
พารามิเตอร์ 18 อันดับแรกของคำสั่งเรียกใช้ PowerShell อธิบายไว้ด้านล่าง
1. AllowRedirection: บางครั้งเมื่อคุณพยายามเข้าถึงคอมพิวเตอร์ระยะไกล อาจเป็นไปได้ที่คอมพิวเตอร์ระยะไกลส่งคืน URI อื่นสำหรับการเปลี่ยนเส้นทางอื่น โปรดจำไว้ว่า PowerShell จะเปลี่ยนเส้นทางโดยอัตโนมัติหากเราต้องการเปลี่ยนเส้นทางไปยัง URL ส่งคืนระยะไกลมากกว่าที่เราควรใช้พารามิเตอร์นี้
<แข็งแกร่ง>2. ApplicationName: ที่นี่เราสามารถกำหนดชื่อแอปพลิเคชันของ ConnectionURI ของเราได้ เราควรใช้พารามิเตอร์นี้เฉพาะเมื่อเราไม่ได้ใช้ ConnectionURI
<แข็งแกร่ง>3. ArgumentList: นี่คือตัวแปรที่เราสามารถส่งผ่านไปยังคำสั่งระยะไกลได้ เนื่องจากตัวแปรคำสั่งระยะไกลจะถูกแทนที่ด้วยตัวแปรเหล่านี้ ส่งต่อข้อโต้แย้งโดยคั่นด้วยเครื่องหมายจุลภาค
<แข็งแกร่ง>4. AsJob: สมมติว่าคุณกำลังเรียกใช้คำสั่งบางคำสั่งบนคอมพิวเตอร์ระยะไกล และคำสั่งหรืองานนั้นใช้เวลานานเกินไป ในกรณีนี้ คำสั่ง AsJob จะส่งคืนออบเจ็กต์บางส่วนที่ให้รายละเอียดของงานที่กำลังทำงานอยู่ ง่าย ๆ มันจะช่วยให้เราสามารถเรียกใช้พื้นหลังได้ในกรณีที่งานก่อนหน้านี้ใช้เวลานานในการดำเนินการ
<แข็งแกร่ง>5. การตรวจสอบสิทธิ์: สิ่งนี้กำหนดกลไกสำหรับการตรวจสอบสิทธิ์สำหรับการเข้าถึงคอมพิวเตอร์ระยะไกล แต่ใช้ได้เฉพาะกับ Windows, Vista และ Windows Server 2008 เท่านั้น
<แข็งแกร่ง>6. CertificateThumbprint: ช่วยให้เราสามารถใช้ใบรับรองคีย์สาธารณะดิจิทัลบางส่วนเพื่อสร้างการเชื่อมต่อกับคอมพิวเตอร์ระยะไกล
<แข็งแกร่ง>7. ชื่อคอมพิวเตอร์: คำสั่งนี้กำหนดคอมพิวเตอร์ที่เราจะใช้คำสั่งของเรา หากเราไม่ได้กำหนด -ComputerNameit จะเรียกใช้คำสั่งบนคอมพิวเตอร์เฉพาะที่.
<แข็งแกร่ง>8. ConnectionUri: กำหนด Uniform Resource Identifier (URI) ซึ่งมีจุดสิ้นสุดของเซสชัน
ด้านล่างนี้เป็นรูปแบบสำหรับสิ่งนั้น:
<การขนส่ง>://
ค่าเริ่มต้นจะเป็นดังนี้:
http://localhost:8081/Ranjan
ในกรณีที่คุณไม่มีตำแหน่งข้อมูล คุณสามารถใช้ UseSSL และพอร์ตเพื่อกำหนดค่า URI การเชื่อมต่อของคุณได้
<แข็งแกร่ง>9. ContainerId: กำหนดอาร์เรย์ของรหัส
10. ข้อมูลรับรอง: แสดงบัญชีผู้ใช้ทั้งหมดที่มีสิทธิ์ดำเนินการบางอย่าง หากเราไม่ได้กำหนดไว้ก็จะให้เฉพาะผู้ใช้ปัจจุบันเท่านั้น
11. EnableNetworkAccess: สมมติว่าเราต้องการคัดลอกไฟล์ XML บางไฟล์จากคอมพิวเตอร์เครื่องหนึ่ง (หนึ่งเซสชัน) และวางลงในคอมพิวเตอร์ในระบบ จากนั้นเราจึงสามารถใช้คำสั่งนี้ได้ เพิ่มโทเค็นความปลอดภัยให้กับเซสชันย้อนกลับซึ่งรับข้อมูลจากเซสชันอื่น
12. FilePath: หากเราต้องการเข้าถึงไฟล์หรือสคริปต์บนคอมพิวเตอร์ระยะไกล เราสามารถใช้คำสั่งนี้ได้ เราเพียงแค่ต้องระบุเส้นทางของมัน
13. ชื่อโฮสต์: ระบุอาร์เรย์ของชื่อคอมพิวเตอร์สำหรับการเชื่อมต่อแบบ Secure Shell (SSH) สิ่งนี้คล้ายกับพารามิเตอร์ ComputerName ยกเว้นว่าการเชื่อมต่อกับคอมพิวเตอร์ระยะไกลนั้นทำโดยใช้ SSH แทนที่จะเป็น Windows WinRM
14. JobName: ช่วยให้เราเขียนชื่องานที่เป็นมิตรต่อผู้ใช้ได้ ไวยากรณ์ง่ายๆ ของมันคือ Job
15. NoNewScope: กำหนดว่า cmdlet ที่กำหนดจะทำงานในขอบเขตปัจจุบัน หากเราไม่ระบุพารามิเตอร์นี้ cmdlet ก็จะทำงานในขอบเขตของตัวเอง
16. พอร์ต: กำหนดพอร์ตที่คอมพิวเตอร์ระยะไกลใช้งานอยู่ พอร์ตระยะไกลคือคอมพิวเตอร์ระยะไกลของผู้ใช้ ดังนั้นในการเชื่อมต่อคอมพิวเตอร์เครื่องใดก็ได้ เราจำเป็นต้องได้รับพอร์ตคอมพิวเตอร์ระยะไกลที่คอมพิวเตอร์กำลังฟังอยู่
17. RemoteDebug: ช่วยให้เราสามารถใส่ดีบักเกอร์บนคอมพิวเตอร์ระยะไกลสำหรับคำสั่งที่เราจะดำเนินการเพื่อตรวจสอบหรือแก้ไขข้อบกพร่อง
18. ชื่อผู้ใช้: กำหนดชื่อผู้ใช้สำหรับบัญชีระยะไกลที่เรากำลังรันคำสั่ง ดังนั้น ตัวอย่างเช่น หาก for กำลังรันคำสั่งสำหรับคอมพิวเตอร์ระยะไกล XYX จะต้องมีผู้ใช้ที่มี “XYZuser”
ตัวอย่างการใช้งาน PowerShell Inrigg-Command
ต่อไปนี้เป็นตัวอย่างต่างๆ ในการใช้คำสั่งเรียกใช้ PowerShell
ตัวอย่าง #1
Invoke-Command -ScriptBlock {Get-Process}เอาต์พุต:
เราสามารถรันคำสั่งเดียวกันบนคอมพิวเตอร์ระยะไกลได้เช่น
Invoke-Command -ComputerName “name of host or remote computer”-ScriptBlock {$p = Get-Process PowerShell}ตัวอย่าง #2
ด้านล่างนี้เป็นตัวอย่างสำหรับคอมพิวเตอร์เฉพาะที่เพื่อรับเวอร์ชันของคอมพิวเตอร์
invoke-command -scriptblock {(get-host).version}เอาต์พุต:
สำหรับคอมพิวเตอร์ระยะไกล
$version = Invoke-Command -ComputerName (Get-Content Machines.txt) -ScriptBlock {(Get-Host).Version}ตัวอย่าง #3
ในตัวอย่างด้านล่าง เรากำลังใส่ Get-Host ไว้ในวงเล็บปีกกา และในการรันคำสั่งนี้ เราได้รับเอาต์พุตเป็นรายละเอียดโฮสต์ที่สมบูรณ์
Invoke-Command -ScriptBlock {Get-Host}เอาต์พุต:
ตัวอย่าง #4
ในตัวอย่างด้านล่าง เรากำลังใส่ Get-Culture ไว้ในวงเล็บปีกกา และเมื่อรันคำสั่งนี้ เราก็จะได้ผลลัพธ์ออกมา
Invoke-Command -ScriptBlock {Get-Culture}เอาต์พุต:
หากคุณต้องการเรียกใช้คำสั่งเดียวกันสำหรับคอมพิวเตอร์ระยะไกลที่คุณสามารถใช้ได้
Invoke-Command -ComputerName “remote computer name” -Credential domain\username -ScriptBlock {Get-Culture}คำสั่งนี้ยังใช้ได้กับ Linux และ macOS ดังนั้นหากใครก็ตามที่ใช้ Linux หรือ macOS คุณสามารถติดตามเอกสารประกอบได้
บทสรุป
ในกรณีของคำสั่งที่กำหนดไว้ (กลุ่มคำสั่ง) ซึ่งเราต้องการให้รันบนเครื่องท้องถิ่น (คอมพิวเตอร์เครื่องเดียวกัน) หรือบนคอมพิวเตอร์ระยะไกล เราสามารถใช้ Invoke-Command




