ตัวแปรอัตโนมัติใน PowerShell คืออะไร

Tawpaer Xatnomati Ni Powershell Khux Xari



ของ PowerShell “ ตัวแปรอัตโนมัติ ” จำเป็นสำหรับการจัดการระบบ การทำงานอัตโนมัติ และกิจกรรมการเขียนสคริปต์ ตัวแปรเหล่านี้สร้างขึ้นภายในโดยรันไทม์ของ PowerShell และทำหน้าที่เป็นตัวยึดตำแหน่งเพื่อจัดเก็บและอ้างอิงข้อมูลเฉพาะระหว่างการดำเนินการของสคริปต์หรือคำสั่ง การทำความเข้าใจและใช้ประโยชน์จากตัวแปรอัตโนมัติเหล่านี้อย่างมีประสิทธิภาพสามารถเพิ่มประสิทธิภาพและการทำงานของสคริปต์ PowerShell ได้อย่างมาก

บทความนี้มีวัตถุประสงค์เพื่อสำรวจแนวคิดของ 'ตัวแปรอัตโนมัติ' ใน PowerShell ความสำคัญ และวิธีการใช้ประโยชน์จากสถานการณ์ต่างๆ







ตัวแปรอัตโนมัติใน PowerShell คืออะไร

ในการเริ่มต้น เรามาเจาะลึกคำจำกัดความของ “ ตัวแปรอัตโนมัติ '. ตัวแปรเหล่านี้ถูกกำหนดไว้ล่วงหน้าและถูกสร้างขึ้นโดยอัตโนมัติโดย PowerShell ระหว่างการทำงานของสคริปต์ สิ่งเหล่านี้ตอบสนองวัตถุประสงค์ที่แตกต่างกัน รวมถึงการให้ข้อมูลเกี่ยวกับระบบ อาร์กิวเมนต์บรรทัดคำสั่ง รายละเอียดเกี่ยวกับสคริปต์ และอื่นๆ อีกมากมาย



PowerShell มี 'ตัวแปรอัตโนมัติ' หลายตัว และแต่ละตัวมีจุดประสงค์ที่แตกต่างกันในการดำเนินการสคริปต์ ตัวแปรเหล่านี้มีดังนี้:



1. $PSVersionTable

หนึ่งในตัวแปรอัตโนมัติพื้นฐานใน PowerShell คือ “ $PSเวอร์ชันตาราง '. ตัวแปรนี้ช่วยให้นักพัฒนาสคริปต์สามารถตรวจสอบเวอร์ชันของ PowerShell ที่กำลังใช้งานอยู่ได้ ซึ่งอาจมีความสำคัญเมื่อพิจารณาความเข้ากันได้และความพร้อมใช้งานของฟีเจอร์และฟังก์ชันการทำงานบางอย่าง





คุณสมบัติต่อไปนี้เชื่อมโยงกับตัวแปรนี้:

รุ่น PS: ส่งกลับหมายเลขรุ่นของ PowerShell



ป.ล. ฉบับ: สำหรับ PowerShell 4 และรุ่นก่อนหน้า รวมถึง PowerShell 5.1 บน Windows รุ่นที่มีคุณลักษณะครบถ้วน คุณสมบัตินี้มีค่าเป็น 'เดสก์ท็อป' คุณลักษณะนี้มีค่าเป็น Core สำหรับ PowerShell 6 และใหม่กว่า เช่นเดียวกับ Windows PowerShell 5.1 สำหรับรุ่นที่ใช้พื้นที่น้อย เช่น Windows Nano Server หรือ Windows IoT

รหัส GitCommit: ดึงรหัสยืนยัน GitHub ของไฟล์ต้นฉบับ

คุณ: บันทึกข้อมูลเกี่ยวกับระบบคอมพิวเตอร์ที่ PowerShell ใช้อยู่

แพลตฟอร์ม: ส่งคืนแพลตฟอร์มที่รองรับของระบบปฏิบัติการ Unix มีค่าบน Linux และ macOS ตรวจสอบ $IsMacOs และ $IsLinux

PS รุ่นที่ใช้ร่วมกันได้: เวอร์ชัน PowerShell ที่เข้ากันได้กับเวอร์ชันปัจจุบันจะถูกส่งกลับ

PSRemotingโปรโตคอลเวอร์ชัน: ส่งกลับหมายเลขเวอร์ชันสำหรับโปรโตคอลการจัดการระยะไกลของ PowerShell

SerializationVersion: ส่งคืนเวอร์ชันของวิธีการทำให้เป็นอนุกรม

WSManStackเวอร์ชัน: ส่งคืนหมายเลขเวอร์ชันของสแต็ก WS-Management

$ ตารางเวอร์ชัน PS

2. $หาเรื่อง

ตัวแปรอัตโนมัติที่สำคัญอีกตัวใน PowerShell คือ “ $เถียง ” ซึ่งมีอาเรย์ของอาร์กิวเมนต์บรรทัดคำสั่งที่ส่งผ่านไปยังสคริปต์หรือฟังก์ชัน ตัวแปรนี้ช่วยให้นักพัฒนาสามารถประมวลผลและจัดการอาร์กิวเมนต์ที่ให้มาแบบไดนามิกภายในสคริปต์ของพวกเขา

เมื่อกำหนดฟังก์ชัน คุณอาจใช้คีย์เวิร์ด 'param' เพื่อประกาศพารามิเตอร์ หรือคุณสามารถเพิ่มรายการพารามิเตอร์ที่คั่นด้วยเครื่องหมายจุลภาคในวงเล็บต่อท้ายชื่อฟังก์ชัน ตัวแปร '$Args' ของการกระทำเหตุการณ์จะเก็บอ็อบเจ็กต์ที่ทำหน้าที่เป็นตัวยึดตำแหน่งสำหรับพารามิเตอร์เหตุการณ์ของเหตุการณ์ที่กำลังจัดการ:

แต่ละ ( $ หาเรื่อง ใน $เถียง ) {
เขียนโฮสต์ $ หาเรื่อง
}

3. $MyInvocation

$MyInvocation ” ตัวแปรให้ข้อมูลพื้นหลังที่สำคัญเกี่ยวกับสคริปต์หรือขั้นตอนที่กำลังทำงานอยู่ นำเสนอคุณสมบัติต่างๆ เช่น ชื่อสคริปต์ หมายเลขบรรทัดสคริปต์ และไม่ว่าสคริปต์จะถูกเรียกใช้แบบโต้ตอบหรือไม่โต้ตอบ คุณสมบัติเหล่านี้ช่วยให้นักพัฒนาสคริปต์ใช้ตรรกะการโยงหัวข้อ กำหนดกลไกการจัดการข้อผิดพลาด หรือสร้างการบันทึกและการรายงานที่มีความหมาย:

$ คำขอของฉัน

4. $ข้อผิดพลาด

ตัวแปรอัตโนมัติที่ไม่ค่อยมีใครรู้จัก “ $ข้อผิดพลาด ” ดักจับข้อความแสดงข้อผิดพลาดหรือข้อยกเว้นใดๆ ที่เกิดขึ้นระหว่างการทำงานของสคริปต์ได้อย่างมีประสิทธิภาพ สามารถเข้าถึง “$Error” เพื่อดึงรายละเอียดข้อผิดพลาดเฉพาะ เช่น ข้อความแสดงข้อยกเว้น สแต็กเทรซ หรือรหัสข้อผิดพลาด ทำให้สามารถวิเคราะห์และแก้ไขจุดบกพร่องโดยละเอียดได้

ข้อผิดพลาดล่าสุดแสดงโดยวัตถุข้อผิดพลาดแรกในอาร์เรย์ “ $ข้อผิดพลาด[0] “. คุณสามารถใช้ตัวเลือกทั่วไปของ ErrorAction โดยมีค่า 'Ignore' เพื่อหยุดข้อผิดพลาดไม่ให้ถูกเพิ่มไปยังอาร์เรย์ '$Error'

สมมติว่าเราพิมพ์คำสั่งที่ถูกต้อง:

ไอพี [ รูป

ตอนนี้ หากเราป้อน cmdlet “$Error”:

$ ข้อผิดพลาด

5. $PSCMdlet

เมื่อทำงานกับโมดูล PowerShell ตัวแปรอัตโนมัติ “ $PSCMdlet ” มีผลบังคับใช้ ตัวแปรนี้ให้การเข้าถึงอินสแตนซ์ปัจจุบันของ cmdlet หรือฟังก์ชันที่กำลังเรียกใช้ ซึ่งอำนวยความสะดวกในการโต้ตอบโดยตรงกับคุณสมบัติและวิธีการ

เมื่อใช้ “$PSCmdlet” นักพัฒนาสคริปต์ขั้นสูงสามารถปรับแต่งและปรับปรุงลักษณะการทำงานของโมดูลโดยขยายหรือแก้ไขฟังก์ชันการทำงานในตัว คุณสามารถใช้แอตทริบิวต์และวิธีการของวัตถุใน cmdlet หรือโค้ดฟังก์ชันของคุณตามเกณฑ์การใช้งาน:

การทำงาน ประเภทของ psCmdlet {
[ cmdletBinding ( ) ] พารามิเตอร์ ( )
เสียงสะท้อน 'ประเภทของ ` $psCmdlet เป็น $($psCmdlet.GetType() .ชื่อเต็ม)'
}

ประเภทของ psCmdlet

นอกเหนือจากตัวแปรที่กล่าวมาแล้ว PowerShell ยังรวมตัวแปรอัตโนมัติ เช่น $HOME, $PROFILE, $PWD และอื่นๆ อีกมากมาย ซึ่งให้บริการตามวัตถุประสงค์ที่แตกต่างกัน เช่น การเข้าถึงอินพุต ข้อผิดพลาดในการติดตาม การเรียกข้อมูลสภาพแวดล้อม การจัดการพารามิเตอร์ และอื่นๆ อีกมากมาย ตัวแปรเหล่านี้อยู่ด้านล่าง:

ตัวแปรอัตโนมัติ คำอธิบาย
$$ เก็บโทเค็นสุดท้ายในบรรทัดก่อนหน้าที่ได้รับจากเซสชัน PowerShell
$? เก็บสถานะการดำเนินการของคำสั่งสุดท้าย
$^ ประกอบด้วยโทเค็นแรกของบรรทัดสุดท้ายที่เซสชันได้รับ
$_ แสดงวัตถุปัจจุบันในไปป์ไลน์
$Consoleชื่อไฟล์ มีเส้นทางของไฟล์คอนโซล (.psc1) ที่ใช้ล่าสุดในเซสชัน
$EnabledExperimentalFeatures ประกอบด้วยรายการคุณลักษณะทดลองที่เปิดใช้งาน
$เหตุการณ์ มีวัตถุ “PSEventArgs” ที่แสดงถึงเหตุการณ์ที่กำลังดำเนินการ
$Event อาร์กิวเมนต์ มีอาร์กิวเมนต์เหตุการณ์แรกของเหตุการณ์ที่กำลังดำเนินการ
$EventSubscriber แสดงถึงสมาชิกเหตุการณ์ของเหตุการณ์ที่กำลังดำเนินการ
$ExecutionContext แสดงบริบทการดำเนินการของโฮสต์ PowerShell
$ เท็จ แสดงถึงค่าบูลีน “เท็จ”
$foreach มีตัวแจงนับของลูป 'for-Each'
$บ้าน ประกอบด้วยพาธแบบเต็มของโฮมไดเร็กทอรีของผู้ใช้
$โฮสต์ แสดงถึงแอปพลิเคชันโฮสต์ปัจจุบันสำหรับ PowerShell
$อินพุต ทำหน้าที่เป็นตัวแจงนับสำหรับอินพุตทั้งหมดที่ส่งผ่านไปยังฟังก์ชันหรือสคริปต์
$IsCoreCLR ระบุว่าเซสชันทำงานบน .NET Core Runtime (CoreCLR) หรือไม่
$IsLinux ระบุว่าเซสชันทำงานบนระบบปฏิบัติการ Linux หรือไม่
$IsMacOS ระบุว่าเซสชันทำงานบนระบบปฏิบัติการ MacOS หรือไม่
$IsWindows ระบุว่าเซสชันทำงานบนระบบปฏิบัติการ Windows หรือไม่
$LASTEXITCODE เก็บรหัสทางออกของโปรแกรมดั้งเดิมล่าสุดหรือสคริปต์ PowerShell
$ตรงกัน มีสตริงที่ตรงกันจากตัวดำเนินการ '-match' และ '-notmatch'
$NestedPromptLevel ติดตามระดับพรอมต์ปัจจุบันในคำสั่งที่ซ้อนกันหรือสถานการณ์การดีบัก
$null แสดงถึงค่าว่างหรือค่าว่าง
$PID มีตัวระบุกระบวนการ (PID) ของเซสชัน PowerShell
$โปรไฟล์ มีเส้นทางแบบเต็มของโปรไฟล์ PowerShell สำหรับผู้ใช้ปัจจุบันและแอปพลิเคชันโฮสต์
$PSBoundParameters เก็บพจนานุกรมของพารามิเตอร์ที่ส่งไปยังสคริปต์หรือฟังก์ชันและค่าต่างๆ
$PSCommandPath ประกอบด้วยพาธแบบเต็มและชื่อไฟล์ของสคริปต์ที่กำลังดำเนินการ
$PSCulture สะท้อนให้เห็นถึงวัฒนธรรมของพื้นที่เรียกใช้ PowerShell ปัจจุบัน
$PSEdition มีข้อมูลรุ่น PowerShell
$PSHOME มีเส้นทางแบบเต็มของไดเร็กทอรีการติดตั้ง PowerShell
$PSItem เช่นเดียวกับ $_ แสดงถึงวัตถุปัจจุบันในไปป์ไลน์
$PSScriptRoot มีพาธแบบเต็มของไดเร็กทอรีพาเรนต์ของสคริปต์เรียกทำงาน
$PSSenderInfo มีข้อมูลเกี่ยวกับผู้ใช้ที่เริ่มต้น PSSession
$PSUICulture สะท้อนวัฒนธรรมอินเทอร์เฟซผู้ใช้ (UI) ที่กำหนดค่าในระบบปฏิบัติการ
$PWD แสดงถึงไดเร็กทอรีการทำงานปัจจุบันของเซสชัน PowerShell
$ผู้ส่ง มีวัตถุที่สร้างเหตุการณ์
รหัสเชลล์ $ มีตัวระบุของเชลล์ปัจจุบัน
$StackTrace เก็บการติดตามสแต็กสำหรับข้อผิดพลาดล่าสุด
$สวิตช์ มีตัวแจงนับของคำสั่ง 'Switch'
$นี้ อ้างถึงอินสแตนซ์ของคลาสในบล็อคสคริปต์ที่ขยายคลาส
$จริง แสดงค่าบูลีน “จริง”

คุณสามารถค้นหา 'ตัวแปรอัตโนมัติ' ทั้งหมดใน PowerShell ได้โดยการเรียกใช้คำสั่งด้านล่าง:

รับตัวแปร

บทสรุป

ตัวแปรอัตโนมัติ ” สร้างแกนหลักของการเขียนสคริปต์ PowerShell ช่วยให้นักพัฒนาได้รับข้อมูลเกี่ยวกับระบบ อาร์กิวเมนต์บรรทัดคำสั่ง บริบทการดำเนินการของสคริปต์ และอื่นๆ ด้วยการควบคุมตัวแปรอัตโนมัติ เช่น “$PSVersionTable”, “$Args”, “$MyInvocation”, “$Error” และอื่นๆ นักพัฒนาสคริปต์ PowerShell สามารถสร้างแนวทางปฏิบัติในการดูแลระบบที่มีความคล่องตัว