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

จะตรวจสอบว่าตัวแปรเป็นอาร์เรย์ใน PowerShell ได้อย่างไร


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

ในการตรวจสอบว่าตัวแปรเป็นอาร์เรย์ใน PowerShell หรือไม่ ให้ใช้ตัวดำเนินการ -is ตามด้วย [array] ตัวอย่างเช่น นิพจน์ $variable -is [array] จะให้ผลลัพธ์เป็น True หาก $variable เป็นอาร์เรย์จริง หรือเป็น False หากไม่ใช่ นี่เป็นวิธีที่รวดเร็วและมีประสิทธิภาพในการตรวจสอบประเภทของตัวแปร

วิธีตรวจสอบว่าตัวแปรเป็นอาร์เรย์ใน PowerShell หรือไม่

ตอนนี้ให้เราตรวจสอบว่าตัวแปรเป็นอาร์เรย์ใน PowerShell หรือไม่โดยใช้วิธีการต่างๆ

การใช้ตัวดำเนินการ -is

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

$a = 1,2,3,4,5
$a -is [array]

หาก $a เป็นอาร์เรย์ ผลลัพธ์ของบรรทัดที่สองจะเป็น True ในทางกลับกัน ถ้า $a ไม่ใช่อาร์เรย์ ก็จะส่งกลับ False

คุณสามารถตรวจสอบผลลัพธ์ได้ในภาพหน้าจอด้านล่าง:

การใช้เมธอด .GetType()

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

$a = 1,2,3,4,5
$type = $a.GetType()
$type.Name -eq 'Object[]'

หาก $a เป็นอาร์เรย์ การเปรียบเทียบ -eq 'Object[]' จะส่งกลับ True

การตรวจสอบทรัพย์สินนับ

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

$a = 1,2,3,4,5
$a.Count

$a.Count จะส่งกลับจำนวนขององค์ประกอบในอาร์เรย์ $a ถ้า $a ไม่ใช่อาร์เรย์ PowerShell จะพยายามแปลง $a เป็นอาร์เรย์ แล้วส่งคืนการนับ ซึ่งหมายความว่าแม้แต่ตัวแปรรายการเดียวก็ยังส่งกลับค่านับเป็น 1

การใช้ฟังก์ชันแบบกำหนดเอง

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

function Test-IsArray($variable) {
    return $variable -is [array] -or ($variable.GetType().Name -eq 'Object[]')
}

$a = 1,2,3,4,5
Test-IsArray $a

ฟังก์ชันนี้ Test-IsArray จะส่งกลับ True ถ้า $a เป็นอาร์เรย์ และ False เป็นอย่างอื่น

บทสรุป

หากคุณต้องการระบุว่าตัวแปรเป็นอาร์เรย์ใน PowerShell หรือไม่ คุณสามารถใช้วิธีการต่างๆ ได้ ด้วยการใช้ตัวดำเนินการ -is เมธอด .GetType() การตรวจสอบคุณสมบัติ Count หรือการเขียนฟังก์ชันที่กำหนดเอง คุณสามารถกำหนดได้อย่างแม่นยำว่า ประเภทข้อมูลของตัวแปรของคุณ

โปรดจำไว้ว่าแม้ว่าคุณสมบัติ Count อาจเป็นวิธีที่รวดเร็วในการตรวจสอบอาร์เรย์ แต่ก็ไม่น่าเชื่อถือเสมอไปสำหรับตัวแปรรายการเดียว ตัวดำเนินการ -is และเมธอด .GetType() มีความแม่นยำมากขึ้นในการระบุอาร์เรย์ ฟังก์ชันแบบกำหนดเองให้ความยืดหยุ่นและสามารถรวมการตรวจสอบหลายรายการเข้าด้วยกันเพื่อการตรวจสอบที่ละเอียดยิ่งขึ้น

ในบทช่วยสอน PowerShell นี้ ฉันได้อธิบายวิธีตรวจสอบว่าตัวแปรเป็นอาร์เรย์ใน PowerShell หรือไม่ โดยใช้วิธีการต่างๆ

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