PowerShell Arrays: วิธีสร้างและใช้งาน

ตัวแปรเป็นโครงสร้างข้อมูลพื้นฐานที่สุดในการเข้ารหัสทุก(any type of coding)ประเภท แต่ตัวแปรเดียวแทบจะไม่เพียงพอสำหรับวัตถุประสงค์ส่วนใหญ่ โดยเฉพาะอย่างยิ่งเมื่อต้องจัดการกับอัลกอริธึมที่ซับซ้อนมากขึ้น

นั่นคือที่มาของอาร์เรย์ ไม่ว่าจะเป็น C++ หรือPythonอาร์เรย์ก็มีอยู่ในทุกภาษาการเขียนโปรแกรมในรูปแบบใดรูปแบบหนึ่ง แต่แล้วWindows PowerShellล่ะ? อาร์เรย์PowerShell ทำงาน อย่างไร คุณใช้พวกเขาอย่างไร? ไวยากรณ์ของพวกเขาคืออะไร? ลองหา

PowerShell Arrays 101

พูด ง่ายๆ(Simply)ก็คือ อาร์เรย์เป็นเพียงชุดของตัวแปรที่มีโครงสร้าง แนวคิดคือขจัดความยุ่งยากในการติดตามชื่อหลายสิบชื่อด้วยการยุบตัวแปรที่เกี่ยวข้องเป็นชุดตัวเลข

ในPowerShellคุณสามารถสร้างตัวแปรโดยเติมสัญลักษณ์ $ ไว้ข้างหน้าชื่อตัวแปร ตัวอย่างเช่น:

$prime = 13

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

$name = “Levin”

ในตอนนี้ ในการสร้างอาร์เรย์ใหม่ เพียงแค่กำหนดค่าหลายค่าให้กับตัวแปรเดียวกัน โดยคั่นด้วยเครื่องหมายจุลภาค แบบนี้:

$week = “Monday”, “Tuesday”, “Wednesday”, “Thursday”, “Friday”, “Saturday”, “Sunday”

บางคนชอบที่จะส่งตัวแปรลงในอาร์เรย์อย่างชัดเจนเพื่อหลีกเลี่ยงความสับสน แม้ว่าจะไม่จำเป็นก็ตาม เมื่อต้องการทำสิ่งนี้ ให้ใส่ค่าในวงเล็บนำหน้าด้วยสัญลักษณ์ @

$week = @(“Monday”, “Tuesday”, “Wednesday”, “Thursday”, “Friday”, “Saturday”, “Sunday”)

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

การสร้างอาร์เรย์

เราได้เห็นวิธีการทั่วไปในการสร้างอาร์เรย์แล้ว แต่ขึ้นอยู่กับสถานการณ์ มีวิธีอื่นที่อาจเหมาะสมกว่า ตัวอย่างเช่น หากคุณต้องการสร้างอาร์เรย์ที่มีช่วงของตัวเลข คุณสามารถใช้ตัวดำเนินการช่วง:

$digits = (0..9)

สิ่งนี้จะสร้างอาร์เรย์ของตัวเลขสิบหลักทั้งหมดจากศูนย์ถึงเก้า คุณยังสามารถเริ่มต้นอาร์เรย์ว่างได้ ในกรณีที่คุณต้องการเก็บค่าไว้ในภายหลัง

$values = @()

หลาย(Multiple)อาร์เรย์สามารถซ้อนกันได้ แม้ว่าการใช้งานประเภทนี้อาจทำให้สับสนได้อย่างรวดเร็ว

$coordinates = @(
    (5, 10, 23),
    (11, 7, 16)
)

โดยค่าเริ่มต้น อาร์เรย์สามารถจัดเก็บตัวแปรประเภทใดก็ได้ ไม่ว่าจะเป็นตัวเลข สตริง หรือทั้งสองอย่างรวมกัน แต่คุณสามารถกำหนดประเภทได้อย่างชัดเจนในกรณีที่คุณต้องการจำกัดค่าที่ใส่เข้าไป ตัวอย่างเช่น:

[int[]] $numbers = 2,3,4,5

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

การเข้าถึงอาร์เรย์

จนถึงตอนนี้ เราได้เห็นวิธีการหลายวิธีในการสร้างอาร์เรย์ที่มีข้อมูลประเภทต่างๆ แต่คุณจะเข้าถึงข้อมูลนี้ได้อย่างไร

อาร์เรย์ PowerShell(PowerShell)ใช้รูปแบบเดียวกับที่ใช้โดยภาษาการเขียนโปรแกรมอื่น ตัวแปรอาร์เรย์แต่ละตัวสามารถเข้าถึงได้โดยหมายเลขดัชนี ตัวอย่างเช่น:

$var = $numbers[5]

สิ่งนี้จะคัดลอกค่าที่เก็บไว้ในดัชนีห้าของอาร์เรย์$numbers ใน ตัวแปร$varโปรดทราบว่าดัชนีอาร์เรย์เริ่มนับจาก 0 ดังนั้นรายการแรกจะเข้าถึงได้โดยมีค่าศูนย์

หากเราจะส่งออกสิ่งนี้ตัวอย่างเช่น:

“$days[2]”

เราจะได้วันพุธ ไม่ใช่วันอังคาร

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

$numbers[1] = 0

คุณยังสามารถเพิ่มองค์ประกอบอื่นๆ ให้กับอาร์เรย์ที่มีอยู่ แทนที่จะเปลี่ยนค่าของรายการปัจจุบัน เพียงแค่เพิ่มองค์ประกอบเหล่านั้น เช่น นิพจน์ทางคณิตศาสตร์

$names += “Johny”

วิธีนี้สามารถใช้เพื่อเพิ่มหลายรายการพร้อมกัน หรือแม้กระทั่งทั้งอาร์เรย์

$names += “Charlie, Liam, Teresa”

$names += $surnames

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

$weekdays = $days[0,1,2,3,4]

วนซ้ำผ่านอาร์เรย์

การเข้าถึงองค์ประกอบเฉพาะของอาร์เรย์ด้วยตนเองนั้นดีและดี แต่ถ้าคุณต้องการดำเนินการกับเนื้อหาทั้งหมดของอาร์เรย์ การดำเนินการนั้นอาจเป็นเรื่องที่น่าเบื่อหน่าย แนวทางที่หรูหรากว่าคือการใช้ For loop

สำหรับลูปสามารถผ่านองค์ประกอบทั้งหมดของอาร์เรย์ได้อย่างเป็นระบบ โดยประมวลผลแต่ละค่าตามคำแนะนำ นี่คือวิธีที่คุณสามารถสร้างลูปดังกล่าวได้:

For ($i = 0 ; $i -lt $days.Length ; $i++){
    $days[$i]}

ฟังก์ชัน array.Length จะคืนค่าขนาดของอาร์เรย์ ซึ่งโดยพื้นฐานแล้วจะเป็นจำนวนองค์ประกอบในอาร์เรย์ ซึ่งสามารถเสียบเข้ากับพารามิเตอร์นิพจน์การทดสอบของ For loop เพื่อทำซ้ำองค์ประกอบทั้งหมดอย่างครอบคลุม

Foreach loop และForeach -object(Foreach) loop สามารถทำเช่นเดียวกันกับสคริปต์PowerShell ที่บางกว่า(PowerShell)

Foreach ($day in $days){
    $day}

วิธีนี้ช่วยให้คุณไม่ต้องพยายามกำหนดขนาดของอาร์เรย์ โดยปล่อยให้PowerShellจัดการ รายละเอียด

เมื่อใดที่คุณควรใช้อาร์เรย์ PowerShell(PowerShell Arrays)

แหล่งที่มาของข้อบกพร่องที่ใหญ่ที่สุดในสคริปต์ที่ซับซ้อนคือตัวแปรที่อ้างอิงอย่างไม่ถูกต้อง สิ่งนี้เกิดขึ้นเนื่องจากการมีอยู่ของตัวแปรที่มีชื่อเฉพาะจำนวนมาก ซึ่งทำให้ยากต่อการจดจำวัตถุประสงค์ของตัวแปร

การแก้ไขที่ง่ายที่สุดสำหรับปัญหานี้คือการใช้อาร์เรย์อย่างครอบคลุม ตัวแปรทั้งหมดที่เกี่ยวข้องในลักษณะบางอย่างสามารถกำหนดให้กับอาร์เรย์เดียวและเข้าถึงได้โดยใช้หมายเลขดัชนี

กรณีการใช้งานที่สำคัญ ของ Microsoft PowerShell(Microsoft PowerShell’s)คือระบบอัตโนมัติ และอาร์เรย์มีบทบาทสำคัญในเรื่องนั้น ออบเจ็กต์ที่ส่งคืนโดยPowerShell cmdlets สามารถจัดเก็บในอาร์เรย์และทำซ้ำได้ ซึ่งช่วยให้ทำงานตามลำดับได้โดยอัตโนมัติ ทำให้การดูแลระบบง่ายขึ้นมาก



About the author

ฉันเป็นช่างเทคนิคด้านเสียงและคีย์บอร์ดมืออาชีพที่มีประสบการณ์มากกว่า 10 ปี ฉันเคยทำงานในโลกธุรกิจ ในตำแหน่งที่ปรึกษาและผู้จัดการผลิตภัณฑ์ และล่าสุด เป็นวิศวกรซอฟต์แวร์ ทักษะและประสบการณ์ของฉันช่วยให้ฉันทำงานในโครงการประเภทต่างๆ ตั้งแต่ธุรกิจขนาดเล็กไปจนถึงบริษัทขนาดใหญ่ ฉันยังเป็นผู้เชี่ยวชาญใน Windows 11 และทำงานเกี่ยวกับระบบปฏิบัติการใหม่มานานกว่าสองปีแล้ว



Related posts