ฉันใช้เวลาหลายชั่วโมงกับสิ่งนี้และว่าจ้างผู้คนจำนวนมากที่ฉันรู้จักว่าเป็นผู้เชี่ยวชาญ PowerShell โดยไม่มีโชคช่วย มันควรจะเรียบง่าย แต่คราวนี้มันไม่ได้ผลอย่างแน่นอน
วัตถุประสงค์:
- ฉันต้องการรับคอมพิวเตอร์ทุกเครื่องใน OU (คอมพิวเตอร์ใน OU จะมีการเปลี่ยนแปลง - ฉันเปิดให้ใช้รายการเซิร์ฟเวอร์ แต่ยังต้องเรียกใช้เพื่อรับคอมพิวเตอร์ใน OU ทุกวันและอัปเดตไฟล์ txt ก่อนดำเนินการต่อ เข้าสู่ภารกิจที่สอง - กำลังจะอธิบาย)
- จากนั้นฉันจะใช้คอมพิวเตอร์ที่พบใน OU เพื่อเรียกใช้ gpupdate (ไม่บังคับ มีเพียงนโยบายเดียวที่เชื่อมโยงในเวลา X ทุกวัน - สคริปต์ PS ชุดอื่นจัดการได้สำเร็จ) ฉันรู้ว่าสิ่งนี้สามารถทำได้ด้วยตนเองสำหรับ OU เพราะนั่นไม่ใช่วิธีที่เราต้องการ เรากำลังใช้เครื่องมือของบุคคลที่สามเพื่อเรียกใช้สคริปต์ PS ตามกำหนดเวลาไม่ได้ใช้ตัวกำหนดตารางเวลางานที่คอมพิวเตอร์เครื่องนี้เนื่องจากปัญหาที่ผ่านมาเกี่ยวกับการจัดการ แต่ไม่ว่าเครื่องมือของบุคคลที่สามจะไม่เป็นไร ปัญหาคือฉันไม่สามารถส่งคืนคอมพิวเตอร์ใน OU ได้
ฉันสามารถส่งคืนคอมพิวเตอร์ทุกเครื่องและคุณสมบัติพื้นฐานในโดเมนของฉันโดยใช้:
Get-ADComputer -ตัวกรอง *
อย่างไรก็ตาม ฉันประสบความสำเร็จ 0 ครั้งในการทำงานกับ "SearchBase" และตัวกรองใดๆ:
รับ ADComputer -SearchBase "OU=WVDTestEnvironment,DC=contoso,DC=com" -ตัวกรอง "*"
ฉันได้ลองย้ายตัวกรองไปที่ก่อนหน้า SearchBase, ลบเครื่องหมายคำพูดรอบ ๆ *, ใช้เครื่องหมายคำพูดเดี่ยว, ออกจากตัวกรองและป้อนเมื่อได้รับแจ้งเป็น *, เปลี่ยนตัวพิมพ์เล็กและใหญ่ในเกือบทุกคำ, ตรวจสอบชื่อ OU, โดเมน ฯลฯ เพิ่มช่องว่างระหว่าง OU และ DCs, เปลี่ยน OU เป็น CN, ตรวจสอบให้แน่ใจว่าโหลดโมดูลแล้ว (มันคือ)
แม้ว่าฉันจะทำให้ส่วนนี้ทำงานได้ ตัวอย่างของฉันยังคงทำ gpupdate หลังจากไพพ์ แต่ฉันได้ถอดมันออกอย่างสมบูรณ์เนื่องจากฉันไม่สามารถผ่านส่วนพื้นฐานนี้ไปรวบรวมคอมพิวเตอร์เพื่ออัปเดตได้
หมายเหตุเพิ่มเติม - สิ่งนี้ได้ลองบน Windows Server 2016 และ Windows Server 2019, 16 gb 4 cpus, 32 gb 8 cpus ตามลำดับ เพียงเพื่อแสดงแรงม้าที่มีอยู่ - ระบบปฏิบัติการอาจมีนัยสำคัญเนื่องจากฉันไม่ได้มีปัญหาใน ที่ผ่านมาบนเซิร์ฟเวอร์ปี 2012 และหน้าที่ฉันพบว่าสคริปต์จำนวนมากกำลังเรียกใช้สคริปต์นี้ใน R2 ปี 2012 ฉันเชื่อ
ฉันได้ลองวิ่งแล้ว:
Get-ADComputer -Filter 'ชื่อเฉพาะ เช่น "CN=contoso,CN=com"'
ด้านบนไม่ส่งคืนข้อผิดพลาด แต่จะไม่ส่งคืนผลลัพธ์ แม้ว่าควรส่งคืนบัญชีคอมพิวเตอร์ทั้งหมดในโดเมนด้วย
ข้อผิดพลาดที่ฉันได้รับเมื่อพยายามเรียกใช้ข้อมูลโค้ดต้นฉบับของฉัน :
รับ ADComputer -SearchBase "OU=WVDTestEnvironment,DC=contoso,DC=com" -ตัวกรอง "*"
อยู่ด้านล่าง:
รหัส Powershell และข้อผิดพลาดที่ส่งคืน
OU นี้ยังเป็น OU ย่อย/ย่อย ดังนั้นฉันจึงพยายามรวม OU ระดับบนสุดในฐานการค้นหาของฉันด้วย แต่ข้อผิดพลาดก็เหมือนเดิม (ไม่ใช่ภาพ)
รับ ADComputer -SearchBase "OU=TopLevelOUName,OU=WVDTestEnvironment,DC=contoso,DC=com" -ตัวกรอง "*"
ความช่วยเหลือหรือคำแนะนำใด ๆ ที่จะได้รับการชื่นชมมาก ฉันมั่นใจว่าฉันจะไม่มีปัญหากับคำสั่ง GPUpdate เมื่อฉันสามารถกู้คืนไฟล์ข้อความของคอมพิวเตอร์หรือคอมพิวเตอร์ที่อยู่ในหน่วยความจำและใช้คำสั่งหลังจากไปป์ในบรรทัด PowerShell เดียวกัน ถอดท่อเพิ่มเส้นใหม่อะไรก็ได้ตามต้องการ ฉันแค่ต้องการคืนบัญชีคอมพิวเตอร์เหล่านี้ เนื่องจาก OU นี้จะผันผวนอย่างมากเมื่อเวลาผ่านไป
เริ่มแรกพบข้อมูลโค้ด PowerShell นี้ที่ https://blog.thesysadmins.co.uk/group-policy-gpupdate-an-ou-of-computers.html (ดูวิธีที่ 2)