ฉันไม่ใช่คนที่ดูแลระบบ sysAdmin/PowerShell แต่ฉันมีปัญหาในการทำให้คิวรี Powershell นี้ทำงาน
ความจำเป็นคือการดึงผู้ใช้ทั้งหมดในกลุ่มความปลอดภัย Windows เฉพาะกลับมา และจัดรูปแบบด้วยวิธีเฉพาะ (แสดงด้านล่าง) อย่างไรก็ตาม ฉันมีปัญหาบางอย่างในการระบุว่าเหตุใดตัวกรองของฉันสำหรับกลุ่มความปลอดภัยจึงไม่ทำงาน และสงสัยว่ามีบางอย่างผิดปกติกับวิธีที่ฉันทำ มีการตั้งค่าตัวกรอง
#ตัวอย่าง
$searcher.filter = "(&(memberof=CN=My Windows Security Group,OU=SecurityGroups,OU=Messaging,OU=Enterprise,DC=****,DC=****)(objectCategory=*)) "
$results = $searcher.findall()
ฉันตั้งค่าเบรกพอยต์ใน PowerShell ISE แล้ว แต่ $results ไม่มีค่าใดๆ ในขณะทำการดีบัก
ฉันจำลองสิ่งนี้จากสคริปต์ที่มีอยู่จากเพื่อนร่วมงาน ซึ่งดูเหมือนว่าเขากำลังสอบถาม DL และเห็นค่า $results เมื่อดีบักสิ่งนี้:
#--------------------------------------------- --------
ตัวอย่างตัวกรอง #DL (ใช้งานได้)
#--------------------------------------------- --------
$Searcher.Filter = "(&(memberOf=CN=DL_TestApp_Admin,OU=รายชื่อการแจกจ่าย,OU=ข้อความ,OU=Enterprise,DC=dcInfo,DC=dcInfo,DC=****)(objectCategory=*))"
$results = $searcher.findall()
นี่คือสคริปต์ PS ทั้งหมด (แก้ไขโดยฉัน) ที่กรอง Windows Security Groups
$curdate = (รับวันที่).ToString("MMddyyyy")
$baseDN = "LDAP://"
$Searcher = New-Object DirectoryServices.DirectorySearcher
$searcher.searchroot = new-object system.directoryservices.directoryentry($based)
#--------------------------------------------- --------
#ตัวกรองกลุ่มความปลอดภัยของ Windows (ไม่ทำงาน)
#--------------------------------------------- --------
$searcher.filter = "(&(memberof=CN=My Windows Security Group,OU=SecurityGroups,OU=Messaging,OU=Enterprise,DC=****,DC=****)(objectCategory=*)) "
$results = $searcher.findall()
#--------------------------------------------- --------
#สร้างชุดข้อมูลในรูปแบบเฉพาะ
#--------------------------------------------- --------
$usercsv = $ผลลัพธ์ | #-วัตถุ {
ใหม่วัตถุ -TypeName PSObject -Property @{
"รหัสผู้ใช้" = $_.properties['samAccountName'][0]
"บทบาทของผู้ใช้" = "บลา"
"บทบาทที่สูงขึ้น" = "Y"
"ผู้ใช้ภายใน" = "Y"
"วันที่เข้าสู่ระบบครั้งล่าสุด" = $null
"ข้อมูลเฉพาะแอป 1" = $null
"ข้อมูลเฉพาะแอป 2" = $null
"วันที่สร้างบัญชี" = $null
"วันที่เปลี่ยนรหัสผ่านล่าสุด" = $null
"ที่อยู่อีเมลของผู้ใช้" = $_.properties['mail'][0]
"ชื่อผู้ใช้" = $null
"ชื่อผู้ใช้" = $null
"ข้อมูลเฉพาะแอป 3" = $null
"กลุ่มตรวจสอบ" = $null
}
}
#ส่งออกเป็นcsv
$usercsv | Select-Object -Property "User ID","User Role","Elevated Role","Internal User","Date of Last Login","App Specifications 1","App Specific Info 2","Account Create Date ","วันที่เปลี่ยนรหัสผ่านล่าสุด","ที่อยู่อีเมลผู้ใช้","ชื่อผู้ใช้","นามสกุลผู้ใช้","ข้อมูลเฉพาะแอป 3","กลุ่มรีวิว" | ส่งออก Csv -NoTypeInformation -เส้นทาง "UsersListing_$curdate.csv"
โฮสต์เขียน "เขียน", $results.Count, "บันทึก"
#ลบ CR LF สุดท้าย
#TODO: ย้ายสิ่งนี้ไปยังฟังก์ชันทั่วไปในสคริปต์แยกต่างหากสำหรับทุกคน
สคริปต์ที่จะโทร
$stream = [IO.File]::OpenWrite("UsersListing_$curdate.csv")
$stream.SetLength($stream.Length - 2)
$สตรีม.ปิด()
$stream.Dispose()
เดิมทีฉันได้เขียนสิ่งนี้เพื่อทำงานในท่อปล่อย DevOps Poweshell ดังต่อไปนี้เพื่อสร้างไฟล์ csv:
$Members = Get-ADGroup -Filter {ชื่อ -eq "WSG"} -คุณสมบัติสมาชิก |
เลือกวัตถุ - ขยายคุณสมบัติสมาชิก
$GlobalCatalog = "$((Get-ADDomainController -Discover).Name):xxxx"
$output = Foreach ($User ใน $Members)
{
Get-ADUSer -Identity $User -เซิร์ฟเวอร์ $GlobalCatalog -Properties CN,
ที่อยู่อีเมล, วันหมดอายุของบัญชี, สร้างแล้ว, หน้าแรก, วันที่เข้าสู่ระบบล่าสุด,
PasswordLastSet เมื่อสร้าง | เลือกวัตถุ CN,
SamAccountName, EmailAddress, AccountExpirationDate, สร้าง, เปิดใช้งาน,
หน้าแรก, LastLogonDate, ชื่อ, PasswordLastSet, UserPrincipalName,
เมื่อสร้าง
}
#output ไฟล์ csv
$เอาท์พุท | ส่งออก Csv $Env:TEMP\Users.csv -NoTypeInformation
ในกรณีนี้ รูปแบบผลลัพธ์ไม่สำคัญ และฉันไม่แน่ใจว่าฉันสามารถแก้ไขข้อความค้นหานี้เพื่อแสดงผลลัพธ์ในรูปแบบนี้ได้หรือไม่:
"รหัสผู้ใช้" = $_.properties['samAccountName'][0]
"บทบาทของผู้ใช้" = "บลา"
"บทบาทที่สูงขึ้น" = "Y"
"ผู้ใช้ภายใน" = "Y"
"วันที่เข้าสู่ระบบครั้งล่าสุด" = $null
"ข้อมูลเฉพาะแอป 1" = $null
"ข้อมูลเฉพาะแอป 2" = $null
"วันที่สร้างบัญชี" = $null
"วันที่เปลี่ยนรหัสผ่านล่าสุด" = $null
"ที่อยู่อีเมลของผู้ใช้" = $_.properties['mail'][0]
"ชื่อผู้ใช้" = $null
"ชื่อผู้ใช้" = $null
"ข้อมูลเฉพาะแอป 3" = $null
"กลุ่มตรวจสอบ" = $null
และผลลัพธ์จากแบบสอบถามนี้อยู่ในรูปแบบเฉพาะนี้:
CN :
Samบัญชีชื่อ :
ที่อยู่อีเมล :
วันหมดอายุของบัญชี :
สร้าง :
เปิดใช้งาน:
หน้าแรก :
วันที่เข้าสู่ระบบล่าสุด :
ชื่อ :
รหัสผ่านชุดสุดท้าย :
UserPrincipalName :
เมื่อสร้าง:
ขอขอบคุณล่วงหน้าสำหรับความช่วยเหลือใดๆ