ตัวแปรส่วนกลางของ PowerShell: คู่มือที่ครอบคลุม
ตัวแปรมีความสำคัญอย่างยิ่งในการจัดเก็บและจัดการข้อมูลใน PowerShell ซึ่งเป็นคอนเทนเนอร์ที่จัดเก็บข้อมูลในสคริปต์ของคุณ ทำให้คุณสามารถเข้าถึงและจัดการได้ในภายหลัง มีสถานการณ์ที่คุณอาจต้องใช้ตัวแปรในฟังก์ชันหรือสคริปต์ต่างๆ โดยไม่ต้องกำหนดใหม่ทุกครั้ง นี่คือที่มาของตัวแปรส่วนกลางของ PowerShell ตัวแปรส่วนกลางของ PowerShell คือตัวแปรที่สามารถเข้าถึงได้ทั่วทั้งสคริปต์ รวมถึงฟังก์ชัน cmdlets และบล็อกสคริปต์อื่นๆ ภายในเซสชันปัจจุบัน ตัวแปรเหล่านี้มีประโยชน์อย่างเหลือเชื่อสำหรับการจัดเก็บและแบ่งปันข้อมูลในส่วนต่างๆ ของสคริปต์ของคุณ ในคู่มือที่ครอบคลุมนี้ เราจะมุ่งเน้นไปที่ตัวแปรส่วนกลางของ PowerShell วิธีสร้างและใช้งาน และแนวทางปฏิบัติที่ดีที่สุด ในตอนท้ายของคู่มือนี้ คุณจะมีความเข้าใจอย่างมั่นคงเกี่ยวกับตัวแปรส่วนกลางของ PowerShell และวิธีการใช้งานตัวแปรเหล่านี้อย่างมีประสิทธิภาพ
ข้อมูลเบื้องต้นเกี่ยวกับตัวแปรส่วนกลางของ PowerShell
ใน PowerShell มีตัวแปรสองประเภท: ตัวแปรภายในและตัวแปรส่วนกลาง ด้วยการประกาศตัวแปรร่วม คุณสามารถมั่นใจได้ว่าค่าของตัวแปรจะพร้อมใช้งานทุกที่ในสคริปต์ของคุณ ทำให้ตัวแปรนี้เป็นกลไกที่มีประสิทธิภาพสำหรับการนำกลับมาใช้ใหม่และการจัดการข้อมูลที่มีประสิทธิภาพ
แม้ว่าตัวแปรท้องถิ่นและตัวแปรส่วนกลางจะมีความคล้ายคลึงกัน แต่ขอบเขตและการใช้งานในสคริปต์ของคุณแตกต่างกัน คุณสร้างตัวแปรท้องถิ่นภายในฟังก์ชันหรือบล็อกสคริปต์เฉพาะ และโดยค่าเริ่มต้นจะสามารถเข้าถึงได้เฉพาะภายในบล็อกนั้นในขอบเขตปัจจุบัน เมื่อบล็อกหรือฟังก์ชันสิ้นสุดลง สคริปต์จะทำลายตัวแปรภายในเครื่องและสูญเสียค่าไป
ในทางตรงกันข้าม คุณสร้างตัวแปรร่วมภายนอกบล็อกสคริปต์หรือฟังก์ชันใดๆ ซึ่งช่วยให้ส่วนใดๆ ของสคริปต์ของคุณสามารถเข้าถึงได้ พวกเขามีขอบเขตที่กว้างกว่า ทำให้เหมาะสำหรับการจัดเก็บข้อมูลที่ฟังก์ชันหรือสคริปต์ต่างๆ จำเป็นต้องแชร์
ทำความเข้าใจกับขอบเขตของตัวแปรใน PowerShell
ใน PowerShell ขอบเขตของตัวแปรเกี่ยวข้องกับตำแหน่งที่สามารถเข้าถึงตัวแปรได้ ใน PowerShell ตัวแปรในสคริปต์และฟังก์ชันจะเป็นแบบส่วนตัวสำหรับเอนทิตีเหล่านั้น PowerShell รับประกันความปลอดภัยของตัวแปร นามแฝง ฟังก์ชัน และไดรฟ์ PowerShell (PSDrive) โดยการจำกัดการมองเห็นและการปรับเปลี่ยนขอบเขตเฉพาะ
ขอบเขต PowerShell ต่างๆ ได้แก่:
- ส่วนกลาง: สามารถเข้าถึงตัวแปรได้ตลอดเซสชัน PowerShell ทั้งหมด
- ขอบเขตท้องถิ่น: ตัวแปรสามารถเข้าถึงได้ภายในสคริปต์หรือฟังก์ชันปัจจุบันเท่านั้น
- สคริปต์: ตัวแปรที่กำหนดในขอบเขตสคริปต์สามารถเข้าถึงได้ภายในสคริปต์ปัจจุบัน
- ส่วนตัว: ตัวแปรถูกจำกัดไว้ที่ขอบเขตหลักปัจจุบัน และไม่ได้รับการสืบทอดจากขอบเขตลูกใดๆ
การทำความเข้าใจและการใช้ขอบเขตตัวแปรใน PowerShell เป็นสิ่งสำคัญสำหรับการจัดการและควบคุมการมองเห็นและการเข้าถึงตัวแปรของคุณ ตัวแปร นามแฝง และฟังก์ชันที่กำหนดไว้ในโปรไฟล์ PowerShell ของคุณจะถูกสร้างขึ้นเป็นขอบเขตส่วนกลางด้วย
จะสร้างตัวแปรส่วนกลางใน PowerShell ได้อย่างไร
ตอนนี้คุณเข้าใจพื้นฐานของตัวแปรส่วนกลางของ PowerShell แล้ว มาสำรวจตัวอย่างเชิงปฏิบัติบางส่วนของวิธีใช้ตัวแปรส่วนกลางในสคริปต์และโมดูล PowerShell ของคุณ
การสร้างตัวแปรส่วนกลางใน PowerShell นั้นเป็นกระบวนการที่ไม่ซับซ้อน หากต้องการสร้างตัวแปรร่วม คุณต้องใช้ขอบเขตพารามิเตอร์ $global: เป็นไวยากรณ์ ตัวแก้ไขนี้จะบอก PowerShell ว่าตัวแปรที่คุณกำลังสร้างเป็นตัวแปรร่วมและควรสามารถเข้าถึงได้จากทุกที่ในสคริปต์ของคุณ
หากต้องการประกาศตัวแปรส่วนกลางใน PowerShell คุณสามารถใช้คำนำหน้า '$global:' ก่อนชื่อตัวแปรได้ สิ่งนี้จะบอก PowerShell ให้ใช้ตัวแปรทั่วโลกในเซสชัน นี่คือตัวอย่าง:
$global:myGlobalVariable = "Hello World!"
หรือคุณสามารถใช้ Set-Variable cmdlet เพื่อสร้างตัวแปรร่วมและกำหนดค่าให้กับตัวแปรในคำสั่งเดียวกัน:
Set-Variable -Name "MyGlobalVariable" -Value "Hello World!" -Scope Global
เมื่อคุณสร้างตัวแปรร่วมแล้ว คุณสามารถเข้าถึงได้จากทุกที่ในสคริปต์ของคุณโดยใช้ชื่อตัวแปรเดียวกัน เป็นที่น่าสังเกตว่าตัวแปรส่วนกลางใน PowerShell ไม่ได้จำกัดอยู่เพียงสตริงเท่านั้น คุณสามารถใช้ข้อมูลประเภทใดก็ได้ เช่น จำนวนเต็ม ทศนิยม หรืออาร์เรย์
ลบตัวแปรส่วนกลางใน PowerShell
อีกสิ่งหนึ่งที่ควรจำไว้คือค่าของตัวแปรส่วนกลางยังคงมีอยู่ตลอดเซสชัน PowerShell หากคุณต้องการล้างค่าของตัวแปรส่วนกลาง คุณสามารถใช้ Remove-Variable cmdlet
Remove-Variable -Name myGlobalVariable -Scope Global
หากคุณปิดและเปิด PowerShell อีกครั้ง ตัวแปรส่วนกลางใดๆ ที่คุณกำหนดไว้จะไม่สามารถเข้าถึงได้ คุณยังสามารถลบตัวแปรส่วนกลางออกจากไดรฟ์ PSDrive “ตัวแปร” ได้!
Remove-Item -Path Variable:myGlobalVariable
Clear-Variable cmdlet ใน PowerShell ตั้งค่าของตัวแปรเป็น $null โดยไม่ต้องลบตัวแปรออกจริงๆ
Clear-Variable -Name MyGlobalVariable -Scope Global
สิ่งนี้จะล้างค่าของตัวแปร $global:MyGlobalVariable
การเข้าถึงตัวแปรทั่วโลก
เมื่อคุณสร้างตัวแปรร่วมแล้ว คุณสามารถเข้าถึงและแก้ไขค่าของมันได้โดยใช้ตัวแก้ไขขอบเขต $global: ตัวแก้ไขนี้ช่วยให้คุณสามารถอ้างอิงตัวแปรร่วมจากส่วนใดๆ ของสคริปต์ของคุณ รวมถึงภายในฟังก์ชันและ cmdlets
ตัวอย่างเช่น หากต้องการเข้าถึงค่าตัวแปรโกลบอล $myGlobalVariable ที่เราสร้างไว้ก่อนหน้านี้ คุณสามารถใช้คำสั่งต่อไปนี้:
Write-Host $global:myGlobalVariable
คำสั่งนี้จะส่งออกค่าของตัวแปร $myGlobalVariable ซึ่งก็คือ “Hello World!” คุณยังสามารถใช้ Get-Variable cmdlet ได้:
$global:MyGlobalVar = "This is a global variable"
(Get-Variable -Name 'MyGlobalVar' -Scope Global).Value
อีกวิธีในการดึงข้อมูลตัวแปรส่วนกลางคือการใช้ตัวแปร: ในผู้ให้บริการ PSDrive เช่น.
Get-ChildItem Variable:\
ตัวแปรส่วนกลางของ PowerShell ในฟังก์ชัน
คุณยังสามารถใช้ตัวแปรร่วมในฟังก์ชันต่างๆ ได้ ซึ่งช่วยให้คุณสามารถจัดเก็บข้อมูลที่หลายฟังก์ชันจำเป็นต้องเข้าถึงได้ เมื่อใช้ตัวแปรโกลบอลในฟังก์ชัน จำเป็นต้องใช้ตัวแก้ไขขอบเขต $script: ตัวแก้ไขนี้จะบอก PowerShell ว่าตัวแปรที่คุณกำลังสร้างเป็นตัวแปรระดับสคริปต์ ทำให้สามารถเข้าถึงได้จากฟังก์ชันใดๆ ภายในสคริปต์ของคุณ
ตัวอย่างเช่น สมมติว่าคุณมี 2 ฟังก์ชันในสคริปต์ที่ต้องเข้าถึงตัวแปรร่วมตัวเดียวกัน คุณสามารถสร้างตัวแปรส่วนกลางได้โดยใช้ตัวแก้ไขขอบเขต $script: เช่นนี้
$script:myGlobalVariable = "Hello World!"
เมื่อคุณสร้างตัวแปรร่วมแล้ว คุณสามารถเข้าถึงได้จากฟังก์ชันใดๆ ภายในสคริปต์ของคุณโดยใช้ชื่อตัวแปรเดียวกัน
การเข้าถึงตัวแปรโกลบอลภายในฟังก์ชัน
หากต้องการเข้าถึงตัวแปรร่วมภายในฟังก์ชัน ให้ใช้ตัวแก้ไขขอบเขต $global: ตามด้วยชื่อตัวแปร ตัวอย่างเช่น พิจารณาสคริปต์ต่อไปนี้:
$global:username = "John Doe"
Function Get-Username {
Write-Host "The current user is: $global:username"
}
Get-Username
เมื่อคุณเรียกใช้สคริปต์นี้ ฟังก์ชัน Get-Username จะแสดงเอาต์พุต “ผู้ใช้ปัจจุบันคือ: John Doe” โดยการเข้าถึงตัวแปรโกลบอล $global:username
การแก้ไขตัวแปรร่วมภายในฟังก์ชัน
หากต้องการแก้ไขตัวแปรร่วมภายในฟังก์ชัน ให้ใช้ตัวแก้ไขขอบเขต $global: อีกครั้ง ตามด้วยชื่อตัวแปร อย่างไรก็ตาม สิ่งสำคัญที่ควรทราบคือเมื่อแก้ไขตัวแปรร่วมภายในฟังก์ชัน คุณไม่เพียงแต่เปลี่ยนค่าภายในขอบเขตของฟังก์ชันนั้น แต่ยังเปลี่ยนทั้งเซสชันด้วย
ตัวอย่างเช่น พิจารณาสคริปต์ต่อไปนี้:
$global:Flag= $True
Function Set-GlobalVariable {
$global:Flag= $False
}
Set-GlobalVariable
Write-Host $global:Flag
ในสคริปต์นี้ ฟังก์ชัน Set-GlobalVariable จะแก้ไขค่าของตัวแปรโกลบอล $global:Flag หลังจากการเรียกใช้ฟังก์ชัน สคริปต์จะส่งออกค่าใหม่ของตัวแปรร่วม ซึ่งขณะนี้เป็น "False"
หากคุณต้องการเพิ่มตัวแปรการกำหนดค่าอย่างถาวร ตัวแปรสภาพแวดล้อมคือตัวเลือกที่เหมาะสม! เรียนรู้เพิ่มเติมที่นี่: ตัวแปรสภาพแวดล้อมใน PowerShell
การทำงานกับตัวแปรโกลบอลแบบอ่านอย่างเดียวและส่วนตัว
ในบางกรณี คุณอาจต้องการสร้างตัวแปรส่วนกลางแบบอ่านอย่างเดียวหรือส่วนตัวที่ขอบเขตอื่นไม่สามารถแก้ไขได้หรือเข้าถึงได้ สิ่งนี้มีประโยชน์ในการปกป้องข้อมูลที่ละเอียดอ่อนหรือป้องกันการเปลี่ยนแปลงตัวแปรสำคัญโดยไม่ได้ตั้งใจ
การสร้างตัวแปรโกลบอลแบบอ่านอย่างเดียว
หากต้องการสร้างตัวแปรส่วนกลางแบบอ่านอย่างเดียว ให้ใช้ Set-Variable cmdlet โดยตั้งค่าพารามิเตอร์ -Option เป็น ReadOnly ตัวอย่างเช่น:
Set-Variable -Name "piValue" -Value 3.14159 -Scope Global -Option ReadOnly
คำสั่งนี้สร้างตัวแปรโกลบอลแบบอ่านอย่างเดียวชื่อ piValue ที่มีค่า 3.14159 หากคุณพยายามแก้ไขตัวแปรนี้ คุณจะได้รับข้อผิดพลาด เนื่องจากคุณไม่สามารถแก้ไขตัวแปรคงที่/อ่านอย่างเดียวได้
การสร้างตัวแปรโกลบอลส่วนตัว
หากต้องการสร้างตัวแปรโกลบอลส่วนตัว ให้ใช้ Set-Variable cmdlet พร้อมพารามิเตอร์ -Option ตั้งค่าเป็น Private ตัวอย่างเช่น:
Set-Variable -Name "secretValue" -Value "Top Secret Data" -Scope Global -Option Private
คำสั่งนี้สร้างตัวแปรโกลบอลส่วนตัวชื่อ secretValue พร้อมค่า "ข้อมูลลับสุดยอด" ตัวแปรส่วนตัวสามารถเข้าถึงได้ภายในขอบเขตที่กำหนดไว้เท่านั้น ป้องกันไม่ให้มีการเข้าถึงหรือแก้ไขจากขอบเขตอื่น
แนวทางปฏิบัติที่ดีที่สุดสำหรับการใช้ตัวแปรส่วนกลางใน PowerShell
แม้ว่าตัวแปรร่วมจะมีประโยชน์อย่างเหลือเชื่อในสคริปต์ PowerShell แต่จำเป็นอย่างยิ่งที่จะต้องใช้ตัวแปรเหล่านี้อย่างรอบคอบและปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดเพื่อให้แน่ใจว่าโค้ดมีประสิทธิภาพและบำรุงรักษาได้ ต่อไปนี้เป็นเคล็ดลับบางประการสำหรับการทำงานกับตัวแปรส่วนกลางใน PowerShell:
- จำกัดการใช้ตัวแปรร่วม: เมื่อใดก็ตามที่เป็นไปได้ ให้ใช้ตัวแปรท้องถิ่นแทนตัวแปรร่วม เพื่อป้องกันผลข้างเคียงที่ไม่ได้ตั้งใจ และปรับปรุงความสามารถในการอ่านโค้ด
- ใช้รูปแบบการตั้งชื่อที่สอดคล้องกัน: เมื่อสร้างตัวแปรร่วม จำเป็นอย่างยิ่งที่จะต้องใช้ชื่อที่สื่อความหมายเพื่อระบุสิ่งที่ตัวแปรจัดเก็บไว้ สิ่งนี้สามารถช่วยให้โค้ดของคุณอ่านง่ายขึ้นและเข้าใจง่ายขึ้น
- ตัวแปรร่วมของเอกสาร: ตรวจสอบให้แน่ใจว่าคุณบันทึกตัวแปรร่วมทั้งหมดอย่างดี รวมถึงวัตถุประสงค์ การใช้งาน และผลข้างเคียงที่อาจเกิดขึ้น
- หลีกเลี่ยงการเขียนทับตัวแปรส่วนกลาง: เมื่อสร้างตัวแปรส่วนกลาง จำเป็นอย่างยิ่งที่จะต้องหลีกเลี่ยงการเขียนทับตัวแปรส่วนกลางที่มีอยู่โดยไม่ได้ตั้งใจ ซึ่งอาจนำไปสู่พฤติกรรมที่ไม่คาดคิดในสคริปต์ของคุณ และทำให้การแก้ไขจุดบกพร่องยากขึ้น
- อย่าลืมเริ่มต้นตัวแปรร่วม: เมื่อคุณสร้างตัวแปรร่วม จำเป็นอย่างยิ่งที่จะต้องเริ่มต้นด้วยค่า การไม่ทำเช่นนั้นอาจส่งผลให้เกิดพฤติกรรมที่ไม่คาดคิดในสคริปต์ของคุณ
บทสรุป
ตัวแปรส่วนกลางของ PowerShell นำเสนอวิธีที่ง่ายและมีประสิทธิภาพในการจัดเก็บและจัดการข้อมูลในสคริปต์ของคุณ หลังจากสำรวจโลกของตัวแปรส่วนกลางของ PowerShell แล้ว ก็ถึงเวลานำความรู้นี้ไปปฏิบัติจริง เราได้พูดคุยถึงวิธีที่คุณสามารถตั้งค่าและใช้ตัวแปรร่วมใน PowerShell และวิธีที่การตั้งค่าในตัวแปรเหล่านี้สามารถช่วยคุณปรับปรุงขั้นตอนการทำงานของคุณ ไม่ว่าคุณจะเป็นผู้เชี่ยวชาญ PowerShell ที่มีประสบการณ์หรือเพิ่งเริ่มต้น การใช้ตัวแปรส่วนกลางและลำดับชั้นขอบเขตที่แตกต่างกันอย่างเชี่ยวชาญจะช่วยเพิ่มความสามารถในการเขียนสคริปต์ของคุณได้อย่างไม่ต้องสงสัย อย่าลืมปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดเมื่อทำงานกับตัวแปรร่วม
คำถามที่พบบ่อย:
คุณจะสร้างตัวแปรส่วนกลางใน PowerShell ได้อย่างไร
หากต้องการสร้างตัวแปรส่วนกลางใน PowerShell คุณสามารถใช้ตัวแก้ไขขอบเขต $global: ก่อนชื่อตัวแปรได้ ตัวอย่างเช่น $global:myVariable="Hello World" ซึ่งจะทำให้สามารถเข้าถึงตัวแปรได้จากขอบเขตใดๆ ภายในเซสชัน PowerShell ของคุณ
ตัวแปรเป็นสากลใน PowerShell หรือไม่
ตามค่าเริ่มต้น ตัวแปรใน PowerShell มีขอบเขตภายในเครื่อง ซึ่งหมายความว่าสามารถเข้าถึงได้ภายในขอบเขตหรือฟังก์ชันปัจจุบันเท่านั้น อย่างไรก็ตาม คุณสามารถใช้ตัวแก้ไขขอบเขต “ส่วนกลาง” เพื่อสร้างตัวแปรส่วนกลางที่สามารถเข้าถึงได้จากขอบเขตใดๆ ภายในเซสชัน PowerShell
อะไรคือความแตกต่างระหว่างตัวแปรส่วนกลางและตัวแปรท้องถิ่นใน PowerShell?
ใน PowerShell ตัวแปรส่วนกลางสามารถเข้าถึงได้ตลอดทั้งสคริปต์หรือเซสชัน ในขณะที่ตัวแปรเฉพาะที่สามารถเข้าถึงได้ภายในขอบเขตที่กำหนดไว้เท่านั้น ตัวแปรส่วนกลางสามารถเข้าถึงและแก้ไขได้จากส่วนใดก็ได้ของสคริปต์ ในขณะที่ตัวแปรเฉพาะที่จะถูกจำกัดไว้เฉพาะ บล็อกหรือฟังก์ชันที่มีการประกาศไว้
