การสร้างลูปผ่านอาร์เรย์โดยใช้คำสั่ง "ForEach" และตัวแปร | สภาพแวดล้อม PowerShell | ส่วนที่ 2#2
บทความปัจจุบันเป็นบทความต่อจากบทความก่อนหน้า ซึ่งเราจะให้ข้อมูลเบื้องต้นเบื้องต้นเกี่ยวกับวิธีที่เราเขียนคำสั่ง PowerShell การวนซ้ำผ่านอาร์เรย์โดยใช้คำสั่ง "ForEach "
การสร้างการวนซ้ำผ่านอาร์เรย์โดยใช้ชุดบทความ PowerShell “ForEach”
การสร้างการวนซ้ำผ่านอาร์เรย์โดยใช้ชุดบทความ PowerShell “ForEach” ประกอบด้วยบทความต่อไปนี้:
- การสร้างลูปผ่านอาร์เรย์โดยใช้คำสั่ง "ForEach" PowerShell | การแนะนำเบื้องต้น | ตอนที่ 1#2
- การสร้างลูปผ่านอาร์เรย์โดยใช้คำสั่ง “ForEach” และตัวแปร | สภาพแวดล้อม PowerShell | ส่วนที่ 2#2 (บทความนี้)
การใช้ตัวแปร PowerShell
หากเราต้องการทำให้คำอธิบายของคำว่า "ตัวแปร" ง่ายขึ้น เราสามารถเชื่อมโยงกับองค์ประกอบของตัวแปร "ในฐานะ" คอนเทนเนอร์แบบลอจิคัลที่เก็บ "ข้อมูล"
โดยส่วนใหญ่ “ข้อมูล” ที่จัดเก็บไว้ในตัวแปรนั้นถือได้ว่าเป็น “ข้อมูลอาร์เรย์”
“ตัวแปร” ถือได้ว่าเป็น “องค์ประกอบสำคัญ” ที่ใช้ค่อนข้างบ่อยเมื่อใช้ PowerShell “คำสั่ง ForEach” และอาร์เรย์
การใช้ตัวแปร - กระแสของเหตุการณ์
เมื่อใช้ตัวแปร PowerShell จะมีการนำขั้นตอนหรือขั้นตอนต่อไปนี้ไปใช้:
- ประกาศตัวแปรและ "ที่เก็บตัวแปร" ว่างเปล่า
- จัดเก็บข้อมูลใน "ที่เก็บตัวแปร" โดย "เปลี่ยนเส้นทาง" ผลลัพธ์ของคำสั่ง PowerShell รับ
- ใช้คำสั่ง PowerShell เพิ่มเติมที่ "เข้าถึง" ข้อมูลที่จัดเก็บไว้ในตัวแปรและ "ดำเนินการบางอย่าง" กับข้อมูลนี้
ไวยากรณ์ของตัวแปรในสภาพแวดล้อม PowerShell
ตัวแปร “ไวยากรณ์” ถูกเขียนในลักษณะต่อไปนี้:
- ใช้เครื่องหมาย $ เพื่อ “ประกาศ” ตัวแปร
- กำหนดชื่อตัวแปร ชื่อตัวแปรเป็นชื่อที่เราเลือกเอง แนวทางปฏิบัติที่ดีที่สุดคือการเลือกชื่อตัวแปรที่ "มีความหมาย" ชื่อตัวแปรไม่คำนึงถึงขนาดตัวพิมพ์ ชื่อตัวแปรสามารถมีช่องว่างและอักขระพิเศษได้ แต่สิ่งเหล่านี้ใช้งานยากและควรหลีกเลี่ยง
- เขียนคำสั่ง “PowerShell รับ” เฉพาะสำหรับ “การดึงข้อมูล” เกี่ยวกับวัตถุเฉพาะ ผลลัพธ์จากคำสั่ง PowerShell จะถูกเก็บไว้ในตัวแปร
ตัวอย่างของไวยากรณ์ของตัวแปรอาจเป็น:
$ExchangeMailboxes = Get-Mailboxในสถานการณ์นี้ เราได้กำหนดตัวแปรชื่อ $ExchangeMailboxes ซึ่งจะใช้สำหรับจัดเก็บข้อมูลที่เราได้รับจากคำสั่ง PowerShell Get-Mailbox
การใช้คำสั่ง PowerShell “ForEach” + Array
ข้อดีที่ชัดเจนที่สุดประการหนึ่งของการดำเนินงานด้านการจัดการโดยใช้ PowerShell คือความสามารถในการดำเนินการ "การดำเนินการจำนวนมาก" ซึ่งหมายถึงกระบวนการที่จะดำเนินการบน "กลุ่ม" (อาร์เรย์) ของออบเจ็กต์
ความสามารถในการรันงานเฉพาะบนสมาชิกอาร์เรย์ถูกนำไปใช้หลายครั้งโดยใช้คำสั่ง ForEach PowerShell + ตัวแปรที่จัดเก็บข้อมูล Array (ของสมาชิก Array)
เราใช้คำสั่ง ForEach PowerShell สำหรับการนำโฟลว์ต่อไปนี้ไปใช้:
- “การสแกน” เนื้อหาอาร์เรย์
- ค้นหาสมาชิกตัวแรกในอาร์เรย์
- เรียกใช้คำสั่ง PowerShell เฉพาะบนสมาชิก Array (“ทำอะไรสักอย่าง”)
- เริ่มต้นกระบวนการใหม่ทั้งหมดโดยเข้าไปที่ Array store ดึงข้อมูล สมาชิกตัวที่สอง ใน Array เรียกใช้คำสั่ง PowerShell ที่ร้องขอ และอื่นๆ
กระบวนการวนซ้ำนี้จะหยุดหลังจากคำสั่ง PowerShell ForEach ค้นหา "สมาชิกสุดท้าย" ในอาร์เรย์
ในแผนภาพต่อไปนี้ เราจะเห็นตัวอย่างของคำสั่ง PowerShell ที่มีคำสั่ง “ForEach PowerShell ” + ตัวแปร PowerShell
- ส่วนที่ 1#3 - ในส่วนนี้ เราประกาศชื่อของตัวแปร และ “ชาร์จ ” “ที่เก็บตัวแปร ” ด้วยผลลัพธ์ของคำสั่ง “รับ ” PowerShell
- ตอนที่ 2#3 - ในส่วนนี้ เราจะเริ่ม “ForEach PowerShell stamen ” + ประกาศชื่อของตัวแปรเพิ่มเติม ซึ่งใช้สำหรับแทนสมาชิกเฉพาะใน Array
- ส่วนที่ 3#3 - ในส่วนนี้ (ที่ขึ้นต้นด้วยวงเล็บปีกกา) เรากำหนดคำสั่ง PowerShell เฉพาะ ซึ่งจะถูก “ดำเนินการ” แยกกันสำหรับสมาชิกแต่ละคนใน Array นี่คือส่วน "ทำบางสิ่งบางอย่าง" เมื่อใช้คำสั่ง Loop คำสั่ง PowerShell เฉพาะจะถูกเขียนระหว่างวงเล็บปีกกา
จะกล่าวถึงสมาชิกใน Array ได้อย่างไร?
ดังที่เราทราบ Array คือกลุ่มของสมาชิก เมื่อเราใช้คำสั่ง PowerShell ที่ใช้คำสั่ง “ForEach PowerShell” เราต้องการที่จะระบุหรืออ้างอิงสมาชิกแต่ละคนในอาร์เรย์ และ “ใช้ ” คำสั่ง PowerShell เฉพาะกับสมาชิกแต่ละคนโดยเฉพาะ
ในทางเทคนิคแล้ว มีสองวิธีที่เราสามารถใช้เพื่อเกี่ยวข้องกับ "วัตถุสมาชิกอาร์เรย์"
ในบทความปัจจุบัน ฉันอยากจะทบทวนวิธีการที่เราใช้ตัวแปรเพิ่มเติมที่แสดงถึง "วัตถุสมาชิก"
คำสั่ง ForEach PowerShell รู้วิธีการเข้าถึง "พื้นที่อาร์เรย์" (แสดงโดย "ตัวแปรอาร์เรย์") และวนซ้ำผ่านอาร์เรย์
ในแต่ละลูป คำสั่ง ForEach PowerShell “ดึง ” สมาชิกเฉพาะจากอาร์เรย์ (แสดงโดย “ตัวแปรสมาชิก ”) เรียกใช้คำสั่ง PowerShell ที่จำเป็น และดำเนินการต่อไปยัง “สมาชิก Array ถัดไป”
ชื่อของตัวแปรที่แสดงถึงสมาชิกอาร์เรย์เป็นเพียงชื่อที่เราเลือกเอง
แนวทางปฏิบัติที่ดีที่สุดคือการเลือกชื่อตัวแปรที่มีความหมาย ซึ่งช่วยให้เราแยกแยะระหว่าง “สมาชิก” และ “อาร์เรย์” ได้อย่างง่ายดาย
ในแผนภาพต่อไปนี้ เราจะเห็นโครงสร้างของคำสั่ง “ForEach คำสั่ง PowerShell ” ซึ่งเรากำหนดอาร์เรย์และสมาชิกในอาร์เรย์ โดยใช้ตัวแปรสองตัวที่แตกต่างกัน
ในตัวอย่างของเรา ตัวแปร $Mailbox แสดงถึงสมาชิกแต่ละคนในอาร์เรย์ และตัวแปร $ExchangeMailboxes เป็นตัวแทนของ Array เอง
เพื่อให้สามารถสาธิตแนวคิดของตัวแปรและอาร์เรย์ได้ ลองใช้สองตัวอย่างต่อไปนี้:
ตัวอย่างที่ 1: ดูสมาชิกอาร์เรย์ที่ระบุ
ในตัวอย่างถัดไป เราใช้ตัวแปรชื่อ $ExchangeMailboxes สำหรับจัดเก็บอาร์เรย์ที่สร้างขึ้นโดยใช้คำสั่ง PowerShell Get-mailbox
PowerShell ที่สมบูรณ์คือ:
$ExchangeMailboxes = Get-Mailboxในระยะนี้ เรามีตัวแปรที่ประกอบด้วยสมาชิกอย่างน้อยหนึ่งราย (กล่องจดหมาย Exchange Online) ตามทฤษฎีแล้ว เราไม่สามารถ "รู้" ว่ามีอะไรเก็บไว้ใน "ปริภูมิตัวแปร"
เพื่อให้สามารถดูสมาชิก Array แรกที่จัดเก็บไว้ในตัวแปร $ExchangeMailboxes เราสามารถใช้คำสั่ง PowerShell ต่อไปนี้:
$ExchangeMailboxes[0]หากต้องการดูสมาชิก Array ตัวที่สอง ให้จัดเก็บไว้ในตัวแปร $ExchangeMailboxes
$ExchangeMailboxes[1]และอื่นๆ
ตัวอย่างเอาต์พุตคอนโซล PowerShell:
PS C:\> $ExchangeMailboxes = Get-Mailbox
PS C:\> $ExchangeMailboxes[0]
Name Alias ServerName ProhibitSendQuota
---- ----- ---------- -----------------
Adele Adele amxpr05mb0646 49.5 GB (53,150,220,288 bytes)
PS C:\> $ExchangeMailboxes[1]
Name Alias ServerName ProhibitSendQuota
---- ----- ---------- -----------------
admin_3a5bb52c62 Bob he1pr05mb1369 49.5 GB (53,150,220,288 bytes)ตัวอย่างที่ 2: การเขียนคำสั่งลูป PowerShell ที่แสดงสมาชิกอาร์เรย์แต่ละตัว
ตัวอย่างต่อไปนี้ไม่มี "วัตถุประสงค์ที่แท้จริง" นอกเหนือจากวัตถุประสงค์ในการสาธิตวิธีดำเนินการคำสั่ง Loop สำหรับสมาชิก Array แต่ละตัว
ในตัวอย่างนี้ เราขอให้ PowerShell ดึงข้อมูลสมาชิก Array แต่ละตัวที่จัดเก็บไว้ในตัวแปร $ExchangeMailboxes และเขียนการแจ้งเตือนบนหน้าจอคอนโซล PowerShell ที่ใช้ไวยากรณ์ต่อไปนี้: นี่คือ หนึ่งในสมาชิกอาร์เรย์ - “(กล่องจดหมาย Exchange)” +
ตัวอย่างคำสั่ง PowerShell:
$ExchangeMailboxes = Get-Mailbox
ForEach ($Mailbox in $ExchangeMailboxes) {
Write-host This is one of the array members - "(Exchange mailbox)" - $Mailbox
}ตัวอย่างเอาต์พุตคอนโซล PowerShell:
This is one of the array members - Exchange mailbox - Adele
This is one of the array members - Exchange mailbox - Alice Good
This is one of the array members - Exchange mailbox - Alicia Keys
This is one of the array members - Exchange mailbox - Angelina Jolie
This is one of the array members - Exchange mailbox - Aretha Franklin
This is one of the array members - Exchange mailbox - Beatles the
This is one of the array members - Exchange mailbox - Beyonce
This is one of the array members - Exchange mailbox - Billy
This is one of the array members - Exchange mailbox - Bob Marleyจะระบุตัวตนของสมาชิก Array เฉพาะได้อย่างไร?
ในส่วนนี้ผมอยากจะพูดถึงหัวข้อ - จะระบุตัวตนของสมาชิก Array เฉพาะได้อย่างไร?
ตามที่กล่าวไว้ เราต้องการให้คำสั่ง PowerShell เฉพาะทำงานบนสมาชิกแต่ละตัวของ Array
หากต้องการเปิดใช้งาน PowerShell เพื่อดำเนินการนี้ เราจำเป็นต้องใช้วิธีที่จะช่วยให้ PowerShell “เชื่อมโยง” กับสมาชิกแต่ละคนแยกกัน กล่าวอีกนัยหนึ่งเราต้อง “บอก” PowerShell ว่า “ตัวตน” ของสมาชิกแต่ละคนใน Array คืออะไร,
ในการระบุข้อมูลประจำตัวของสมาชิกในอาร์เรย์ในสภาพแวดล้อม PowerShell เราจะใช้ไวยากรณ์ต่อไปนี้:
ชื่อตัวแปรที่แสดงถึง "วัตถุสมาชิก" + "อักขระจุด" + หนึ่งในคุณสมบัติของวัตถุที่แสดงถึงเอกลักษณ์ของวัตถุ
ฟังดูน่าสับสนและเข้าใจยากใช่ไหม?
ทางออกเดียวที่ฉันรู้คือ - อ่านข้อมูลที่ให้มาและตัวอย่างซ้ำแล้วซ้ำอีกจนกว่าคุณจะเห็น “ภาพที่สมบูรณ์”
ในแผนภาพต่อไปนี้ เราจะเห็นตัวอย่างไวยากรณ์ที่เราใช้เกี่ยวกับสมาชิกเฉพาะในอาร์เรย์
ในตัวอย่างของเรา ตัวแปรที่เราใช้แทนสมาชิก Array คือ $Mailbox และ “คุณสมบัติการระบุตัวตนของวัตถุ ” ที่เราใช้คือ DisplayName
เอกลักษณ์ของวัตถุ ” และ “คุณสมบัติเอกลักษณ์ ”
สิ่งนี้นำเราไปสู่คำถามถัดไป - อะไรคือความหมายของ "เอกลักษณ์ของวัตถุ" และอะไรคือความหมายของ "คุณสมบัติประจำตัว"?
คำตอบก็คือ แต่ละ “วัตถุ PowerShell” มี “ตัวตน” ในลักษณะเดียวกันกับที่เราแต่ละคนมีเอกลักษณ์
เพื่อให้ปัญหานี้ซับซ้อนยิ่งขึ้น แต่ละออบเจ็กต์ PowerShell สามารถมี ข้อมูลระบุตัวตนได้หลายรายการ เช่นเดียวกับที่เราแต่ละคนสามารถมีข้อมูลระบุตัวตนได้หลายรายการ เช่น - ชื่อส่วนตัว ชื่อเล่น หมายเลขประกันสังคม และอื่นๆ
ในไดอะแกรมต่อไปนี้ เราจะดูตัวอย่างข้อมูลเฉพาะตัวที่มีอยู่ทั้งหมดของกล่องจดหมาย Exchange ในสภาพแวดล้อมที่ใช้ Exchange Online
ในกรณีที่คุณ “ปวดหัว” จากความหลากหลายของตัวตน ไม่เป็นไร!
ในความเป็นจริง เราไม่ได้ใช้ "ข้อมูลระบุตัวตน" ทุกประเภท แต่ใช้เฉพาะชุดข้อมูลระบุตัวตนเฉพาะที่ใช้กันทั่วไปแทน
สมาชิกอาร์เรย์และความสัมพันธ์ทั่วไปสองประเภท
ในส่วนนี้ ฉันอยากจะเกี่ยวข้องกับเรื่องที่ฉันอธิบายว่าเป็น “สมาชิกอาร์เรย์และความสัมพันธ์ทั่วไปสองประเภท”
ในทางเทคนิคแล้ว เราสามารถกำหนดความสัมพันธ์ระหว่างออบเจ็กต์ได้สี่ประเภท:
- หนึ่งต่อหนึ่ง
- หนึ่งต่อหลาย ๆ
- หลายต่อหนึ่ง
- มากมายต่อมากมาย
เพื่อให้สามารถกำหนดความสัมพันธ์แบบ "หนึ่งต่อหนึ่ง" ได้ เราไม่จำเป็นต้องใช้คำสั่ง Array และ "ForEach " PowerShell"
เกี่ยวกับความสัมพันธ์ที่ฉันอธิบายว่า "หลายต่อหลาย" ฉันไม่ชอบที่จะเกี่ยวข้องกับความสัมพันธ์ประเภทนี้ในบทความปัจจุบันเพราะมันอาจซับซ้อนเล็กน้อย
ในหลายสถานการณ์ ความสัมพันธ์ทั่วไปที่เราจัดการด้วยคือ ความสัมพันธ์ซึ่งสามารถอธิบายได้ว่าเป็น - แบบหนึ่งต่อหลายหรือหลายต่อหนึ่ง
ความสัมพันธ์แบบหนึ่งต่อหลายความสัมพันธ์ - ตัวอย่าง
ความสัมพันธ์ที่กำหนดเป็น "หนึ่งต่อหลาย" เกี่ยวข้องกับสถานการณ์ที่เราต้องการเปิดใช้งานวัตถุเฉพาะ (หนึ่ง) เพื่อ "ส่งผลกระทบ" หลายวัตถุ (อาร์เรย์)
กล่าวอีกนัยหนึ่ง เปิดใช้งานวัตถุเฉพาะเพื่อ "ทำบางสิ่งบางอย่าง" สำหรับสมาชิกแต่ละคนในอาร์เรย์ของวัตถุ
เพื่อให้สามารถแสดงความสัมพันธ์ดังกล่าวได้ เรามาใช้งานการดูแลระบบในการมอบหมายสิทธิ์กันดีกว่า
ตัวอย่างเช่น John เป็นผู้ดูแลระบบ Exchange Online เราต้องการมอบหมายสิทธิ์การเข้าถึงแบบเต็มให้กับ John บนกล่องจดหมาย Exchange Online แต่ละกล่องที่มีอยู่
- ในตัวอย่างของเรา “อาร์เรย์” จะรวมกล่องจดหมาย Exchange Online ทั้งหมด
- กล่องจดหมาย Exchange Online แต่ละกล่องจะถือว่าเป็นสมาชิกในอาร์เรย์
- John แสดงถึง “หนึ่ง ” ในความสัมพันธ์ปัจจุบัน
- กล่องจดหมาย Exchange Online แสดงถึง "หลาย " ในความสัมพันธ์ปัจจุบัน
ความสัมพันธ์แบบหลายต่อหนึ่ง - ตัวอย่าง
ความสัมพันธ์ที่กำหนดเป็น "หลายรายการต่อหนึ่ง" เกี่ยวข้องกับสถานการณ์ที่เราต้องการเปิดใช้งาน วัตถุหลายรายการ (หลายรายการ) เพื่อ "ส่งผลกระทบ" วัตถุใดวัตถุหนึ่งหรือวัตถุใดวัตถุหนึ่ง (หนึ่ง)
กล่าวอีกนัยหนึ่ง เปิดใช้งานกลุ่มของวัตถุ (หลายวัตถุ) เพื่อ "ทำบางสิ่งบางอย่าง" บนวัตถุเฉพาะ
เพื่อให้สามารถแสดงความสัมพันธ์ดังกล่าวได้ เรามาใช้งานการดูแลระบบในการมอบหมายสิทธิ์กันดีกว่า
ตัวอย่างเช่น เราต้องการกำหนดสิทธิ์การเข้าถึงแบบเต็มให้กับผู้ใช้ทุกคนที่ "อยู่ในกลุ่ม IT" ใน "กล่องจดหมาย Help Desk" (หนึ่ง) ซึ่งทำหน้าที่เป็นกล่องจดหมายสำหรับตั๋ว Helpdesk
- ในตัวอย่างของเรา “Array ” จะรวมสมาชิกไอทีทั้งหมด
- ผู้ใช้ไอทีแต่ละคนจะพิจารณาว่าเป็นสมาชิกในอาร์เรย์
- สมาชิกด้านไอทีเป็นตัวแทนของ “หลายคน ” ในความสัมพันธ์ปัจจุบัน
- “กล่องจดหมาย Help Desk ” แสดงถึง “หนึ่งอัน ” ในความสัมพันธ์ปัจจุบัน
การใช้คำสั่ง PowerShell Loop + ตัวแปร + กำหนดความสัมพันธ์แบบสองประเภททั่วไป
ในส่วนนี้ผมขอ “แร็ป” สองสามวิชาที่เราทบทวนมาจนถึงตอนนี้เพื่อจะได้เข้าใจ “ภาพรวม” ได้ดีขึ้น
การใช้ตัวอย่างคำสั่ง PowerShell ForEach - ตัวอย่างของความสัมพันธ์แบบหนึ่งถึงกลุ่ม
ในส่วนปัจจุบัน เราจะสาธิตความสัมพันธ์ซึ่งอธิบายว่า "หนึ่งต่อหลาย"
คำอธิบายสถานการณ์
ในสถานการณ์ของเรา John คือผู้ดูแลระบบ Exchange เราต้องการกำหนดสิทธิ์การเข้าถึงแบบเต็มของ John บนกล่องจดหมาย Exchange Online ที่มีอยู่ทั้งหมด
เพื่อให้สามารถตอบสนองความต้องการนี้ได้ เราจึงสร้างคำสั่ง PowerShell Loop ที่ประกอบด้วยส่วนต่างๆ ต่อไปนี้:
ส่วนที่ 1#3 - ในส่วนนี้ เรากำหนดตัวแปรชื่อ $ExchangeMailboxes ซึ่งจะ "เก็บ" เอาต์พุตจากคำสั่ง PowerShell Get-Mailbox
คำสั่ง PowerShell ที่ระบุจะได้รับ "รายการ" ของกล่องจดหมาย Exchange Online ที่มีอยู่ทั้งหมด
$ExchangeMailboxes = Get-Mailboxตอนที่ 2#3 - ในส่วนนี้ เรากำหนดตัวแปรเพิ่มเติมชื่อ $Mailbox ที่ใช้แทนสมาชิกแต่ละคนใน “Exchange mailbox Array” (ข้อมูลที่จัดเก็บไว้ในตัวแปร $ExchangeMailboxes)
ForEach ($Mailbox in $ExchangeMailboxes)ส่วนที่ 3#3 - ในส่วนนี้ เรากำหนดคำสั่ง PowerShell ที่จะมอบหมายสิทธิ์การเข้าถึงแบบเต็มให้กับกล่องจดหมาย Exchange Online แต่ละรายการให้กับผู้ใช้ “John
Add-MailboxPermission -identity $Varibale.<Identity> -user <Identity> -AccessRights FullAccessการอ้างอิงข้อมูลระบุตัวตนของสมาชิกอาร์เรย์แต่ละตัว
โปรดสังเกตไวยากรณ์ที่เราใช้สำหรับอ้างอิงข้อมูลเฉพาะตัวของสมาชิก Array แต่ละคน (แต่ละกล่องจดหมาย Exchange Online)
ไวยากรณ์ที่เราใช้คือ $Mailbox.DisplayName
ข้อมูลประจำตัวของสมาชิกแต่ละคนจะถูก “เขียน” โดยใช้ชื่อตัวแปรที่เก็บสมาชิกแต่ละคนในอาร์เรย์ไว้ชั่วคราว ($Mailbox) + คุณสมบัติ “identity ” ที่เฉพาะเจาะจง
ในตัวอย่างของเรา เราใช้ "DisplayName " เป็นคุณสมบัติประจำตัว
“การรวม” ของทั้งสองส่วนนี้ช่วยให้เรา “ระบุ” สมาชิก Array แต่ละคนแยกกันได้ในกระบวนการวนซ้ำที่ดำเนินการโดย “คำสั่ง ForEach PowerShell”
ตัวอย่างคำสั่ง PowerShell ForEach - ตัวอย่างความสัมพันธ์แบบกลุ่มต่อหนึ่ง
ในส่วนปัจจุบัน เราจะแสดงความสัมพันธ์ที่อธิบายว่าเป็น "หลายต่อหนึ่ง"
คำอธิบายสถานการณ์
ฝ่ายไอทีใช้กล่องจดหมายที่ใช้ร่วมกันชื่อ - HelpDesk ซึ่งทำหน้าที่จัดเก็บตั๋วแผนกช่วยเหลือที่ผู้ใช้ในองค์กรเปิด
เราต้องการให้ สมาชิกไอทีแต่ละคน มีสิทธิ์การเข้าถึงแบบเต็มไปยังกล่องจดหมายที่ใช้ร่วมกันชื่อ - HelpDesk
ส่วนที่ 1#3 - ในส่วนนี้ เรากำหนดตัวแปรชื่อ $ITMembers ซึ่งจะ "เก็บ" เอาต์พุตจากคำสั่ง PowerShell
Get-User | Where {$_.Title -eq "Administrator"}คำสั่ง PowerShell ที่ระบุจะได้รับ “รายการ ” ของผู้ใช้ที่มีอยู่ทั้งหมด ซึ่งชื่อของผู้ใช้มีค่า - “ผู้ดูแลระบบ ”
$ITMembers = Get-User | Where {$_.Title -eq "Administrator"}ตอนที่ 2#3 - ในส่วนนี้ เรากำหนดตัวแปรเพิ่มเติมชื่อ $User ซึ่งใช้สำหรับแทนสมาชิกแต่ละคนใน “IT array ” (ข้อมูลที่เก็บไว้ในตัวแปร $ไอทีสมาชิก)
ForEach ($User in $ITMembers)ส่วนที่ 3#3 - ในส่วนนี้ เรากำหนดคำสั่ง PowerShell ที่จะกำหนดสิทธิ์การเข้าถึงแบบเต็มให้กับสมาชิก IT แต่ละคนใน “กล่องจดหมาย Helpdesk”
Add-MailboxPermission -identity <Identity> -user $user.<Identity> -AccessRights FullAccessการอ้างอิงข้อมูลระบุตัวตนของสมาชิกอาร์เรย์แต่ละตัว
สังเกตไวยากรณ์ที่เราใช้สำหรับอ้างอิงข้อมูลประจำตัวของสมาชิก Array แต่ละคน (สมาชิก IT แต่ละคน)
ไวยากรณ์ที่เราใช้คือ $User.Alias
ข้อมูลประจำตัวของสมาชิกแต่ละคนในอาร์เรย์นั้นจะถูก “เขียน” โดยใช้ชื่อตัวแปรที่เก็บสมาชิกแต่ละตัวในอาร์เรย์ไว้ชั่วคราว ($User) + “คุณสมบัติข้อมูลประจำตัว” เฉพาะ
ในตัวอย่างของเรา เราใช้ "นามแฝง" เป็นคุณสมบัติประจำตัว
“การรวม” ของทั้งสองส่วนนี้ช่วยให้เรา “ระบุ” สมาชิก Array แต่ละคนได้เป็นรายบุคคล




















