Powershell การกรองหรือการเลือกวัตถุบางอย่าง


0

ดังนั้นเมื่อฉันเรียกใช้คำสั่งนี้:

Get-ADUser -Filter 'Name -like "*svc*"' | select Name, DistinguishedName

ฉันได้รับผลลัพธ์ต่อไปนี้:

SamAccountName       DistinguishedName
--------------       -----------------
svc_myaccount        CN=svc_myaccount,OU=Service Accounts,OU=me3,OU=me2,DC=me,DC=com

ฉันต้องการกรอง DistinguishedName เพื่อให้ OU แรกเท่านั้น ฉันควรเพิ่มว่าฉันจะไม่คาดหวังว่า "บัญชีบริการ" เป็นรายการเดียวในฟิลด์ OU ฉันต้องการผลลัพธ์:

SamAccountName       DistinguishedName
--------------       -----------------
svc_myaccount        OU=Service Accounts

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

คำตอบ:


0

พบคำตอบที่ดี ที่นี่ . ท่อ Get-ADUser สำหรับสิ่งนี้ Select-Object คำสั่ง:

select Name,@{l='DistinguishedName';e={$_.DistinguishedName.split(',')[1].split('=')[1]}}

ผลลัพธ์คือ:

Name              DistinguishedName
----              -----------------
svc_myaccount     Service Accounts

0

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

นี่คือหนึ่งทางเลือกโดยใช้ regex และแยก

# Parse the DN for the OU array list
Remove the CN and split
('CN=svc_myaccount,OU=Service Accounts,OU=me3,OU=me2,DC=me,DC=com' -replace 'CN=[^=]*,') -split(',')

# Results

OU=Service Accounts
OU=me3
OU=me2
DC=me
DC=com

#Get just the first element of the above array - arrays are zero based
(('CN=svc_myaccount,OU=Service Accounts,OU=me3,OU=me2,DC=me,DC=com' -replace 'CN=[^=]*,') -split(','))[0]

#Results

OU=Service Accounts

ใช้วิธีการข้างต้นกับคุณสมบัติที่คำนวณ

# Pulling live from ADDS
Get-ADUser -Filter 'Name -like "*svc*"' | 
Select-Object -Property Name, 
@{Name='DistinguishedName';Expression = { (($_.DistinguishedName -replace 'CN=[^=]*,') -split(','))[0]}}

หรือนี่เป็นคุณสมบัติที่คำนวณได้ ...

 ('CN=svc_myaccount,OU=Service Accounts,OU=me3,OU=me2,DC=me,DC=com').split(',|=')[3]

... ใช้หรือ (ไปป์ระหว่างสองสตริงการแยก) ในการแยก มันเป็นสิ่งที่ regex เช่นกันซึ่งทำงานร่วมกับ. แยก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.