Score:-1

เซิร์ฟเวอร์ส่งคืนข้อผิดพลาดต่อไปนี้: บริบทการแจงนับไม่ถูกต้อง

ธง cn

นี่คือคำสั่งที่ฉันใช้ ... ใครก็ได้ช่วยฉันด้วย ..

Get-ADComputer -Filter * -Searchbase "OU=IN0010,OU=BU-L04-Glass,OU=CIN,OU=L00-SGTS-USS,DC=zl,DC=if,DC=atcsg,DC=net" - คุณสมบัติ * | จัดเรียง LastLogon | เลือกชื่อ LastLogonDate,@{Name='LastLogon';Expression={[DateTime]::FromFileTime($_.LastLogon)}} | ส่งออก csv -เส้นทาง c:\Temp\ADComputer.csv -NoTypeInformation

cn flag
คำสั่งแรกสร้างคอมพิวเตอร์กี่เครื่อง และทุกเครื่องมี LastLogon หรือไม่
Score:1
ธง cn

มาทำลายสิ่งนี้กันดีกว่า:

  1. เข้าสู่ระบบล่าสุด ไม่ได้จำลองแบบระหว่าง DCs - เป็นการประทับเวลาต่อ DC ที่ไม่ซ้ำกันสำหรับบัญชีนั้น ถ้าคอมพิวเตอร์ไม่เคยเข้าสู่ระบบ DC ที่ข้อความค้นหาของคุณถูกเรียกใช้ คุณสมบัตินั้นจะไม่ถูกเติมข้อมูล หากส่วนใหญ่เข้าสู่ระบบใน DC ที่แตกต่างกัน วันที่อาจไม่ถูกต้อง แต่ถ้าคุณต้องการทราบว่าคอมพิวเตอร์เข้าสู่ระบบ "เมื่อเร็วๆ นี้" ให้ค้นหาแทน LastLogonTimeStamp หรือ วันที่เข้าสู่ระบบล่าสุด - ดูหมายเหตุด้านล่าง

  2. เมื่อคุณต้องการทำความเข้าใจว่าคิวรีกำลังทำอะไรอยู่ อย่าเพิ่งทิ้งทั้งหมดผ่านไปป์ไลน์และส่งออกเป็น CSV เว้นแต่คุณจะสนุกกับการไม่รู้ว่าเกิดอะไรขึ้นและเปิดไฟล์ CSV เปล่าๆ ให้รันคำสั่งง่ายๆ ก่อนเพื่อทำความเข้าใจผลลัพธ์ และตรวจสอบให้แน่ใจว่าคุณได้รับผลลัพธ์ที่ถูกต้องก่อนที่จะส่งออกไปยังไฟล์ ดูตัวอย่างด้านล่าง

  3. หากสิ่งที่คุณต้องการคือ เข้าสู่ระบบล่าสุด หรือ วันที่เข้าสู่ระบบล่าสุด และชื่อคอมพิวเตอร์ โปรด ไม่ได้ใช้ -คุณสมบัติ *. การสืบค้นของคุณจะใช้เวลานานกว่ามาก เนื่องจากคุณกำลังลากข้อมูลทั้งหมดในบัญชีคอมพิวเตอร์กลับคืน หากคุณมีใบรับรองที่จัดเก็บไว้ในวัตถุคอมพิวเตอร์ใน AD ข้อมูลนี้อาจเป็นข้อมูล KB สำหรับแต่ละวัตถุ หากคุณต้องการเพียงสองคุณสมบัติ ให้เลือกคุณสมบัติเหล่านี้: Get-ADComputer -filter '*' - ชื่อคุณสมบัติ LastlogonDate. ตัวอย่างขนาดข้อมูลอยู่ด้านท้าย

LastLogonTimeStamp เทียบกับ LastLogonDate

ไม่เหมือน เข้าสู่ระบบล่าสุด, LastLogonTimeStamp เป็น ทำซ้ำใน DC ทั้งหมด แต่แม่นยำถึง 14 วันที่ผ่านมาเท่านั้น วันที่เข้าสู่ระบบล่าสุด ก็เหมือนกับ LastLogonTimeStampแต่เป็นการคำนวณ [วันเวลา] คุณสมบัติ (ไม่ได้เก็บไว้ใน LDAP แต่คำนวณเมื่อคุณสอบถาม) เนื่องจากเป็น [วันเวลา], จัดเรียงและกรองได้ง่ายขึ้น

ถ้า LastLogonTimeStamp มีอายุไม่เกิน 14 วัน อาจมีวันที่ใหม่กว่านี้ เข้าสู่ระบบล่าสุด สำหรับเครื่องนั้นบน DC อย่างน้อยหนึ่งตัว หากคุณต้องการเวลาที่แม่นยำกว่านี้ คุณจะต้องค้นหา DC ทั้งหมดสำหรับ เข้าสู่ระบบล่าสุด ในบัญชีคอมพิวเตอร์ทั้งหมดแล้วเปรียบเทียบว่ามีวันที่ล่าสุด แต่สำหรับวัตถุประสงค์ในการรายงานทั่วไป เช่น หากคุณกำลังตรวจสอบบัญชีเครื่องที่อาจ "ล้าสมัย" วันที่เข้าสู่ระบบล่าสุด เป็นเรื่องปกติ

อ้างถึง บทความนี้ สำหรับข้อมูลเพิ่มเติม

ทำความเข้าใจผลลัพธ์การค้นหา AD/LDAP

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

ลองตัวอย่างต่อไปนี้ แทนที่ OU และชื่อคอมพิวเตอร์ด้วยชื่อที่ถูกต้องจากสภาพแวดล้อมของคุณอย่างเห็นได้ชัด (ยังไงก็ตาม อย่าเปิดเผยชื่อจริงในคำถามของคุณ)

# แสดงรายการคอมพิวเตอร์ทั้งหมดใน OU ที่มีคุณสมบัติเริ่มต้นที่เอาต์พุต Get-AdComputer - ไม่รวม LastLogonDate เป็นต้น
# เช่น. ชื่อ, ชื่อเฉพาะ, เปิดใช้งาน, objectype ฯลฯ ... 
Get-ADComputer -Filter * -Searchbase "OU=MyOUPath,DC=example,DC=net"

# แสดง -all- คุณสมบัติจากคอมพิวเตอร์ชื่อ "MyComputer"
Get-ADComputer -Filter 'name -eq "Mycomputer"' -Searchbase "OU=MyOUPath,DC=example,DC=net" -properties *

# แสดงเฉพาะคุณสมบัติเฉพาะจากคอมพิวเตอร์เครื่องเดียวกัน
Get-ADComputer -ตัวกรอง 'ชื่อ -eq "Mycomputer"' -Searchbase "OU=MyOUPath,DC=example,DC=net" -ชื่อคุณสมบัติ LastLogonDate

# แสดงรายการคอมพิวเตอร์ทั้งหมดใน OU พร้อมชื่อและ LastLogonDate เท่านั้น
Get-ADComputer -Filter * -Searchbase "OU=MyOUPath,DC=example,DC=net" -ชื่อคุณสมบัติ LastLogonDate

# ดังข้างต้น โดยใช้นิพจน์เพื่อแปลงคุณสมบัติ LastLogon ที่ไม่ได้จำลองเป็น [วันที่และเวลา] แทน
# โปรดทราบว่าจำเป็นต้องมีการประมวลผลเพิ่มเติม หากคุณต้องการเปรียบเทียบวันที่นี้ระหว่าง DC หลายรายการ
Get-ADComputer -Filter * -Searchbase "OU=MyOUPath,DC=example,DC=net" -ชื่อคุณสมบัติ LastLogon | เลือกชื่อ วันที่เข้าสู่ระบบ@{Name='LastLogon';Expression={[DateTime]::FromFileTime($_.LastLogon)}}

# หากผลลัพธ์ของคุณในคำสั่งก่อนหน้าดูดี ตอนนี้คุณสามารถจัดเรียงและส่งออกเป็น CSV
Get-ADComputer -Filter * -Searchbase "OU=MyOUPath,DC=example,DC=net" -ชื่อคุณสมบัติ LastLogonDate | จัดเรียง LastLogonDate | เลือกชื่อ LastLogonDate | ส่งออก csv -เส้นทาง c:\Temp\ADComputer.csv -NoTypeInformation

สำหรับตัวอย่างสุดท้าย the เลือกชื่อ LastLogonDate คือการยกเว้นคุณสมบัติเริ่มต้นเช่น ชื่อเด่น และ objectClass จากการส่งออก CSV นอกจากนี้หากคุณไม่ชอบวิธีการ วันที่เข้าสู่ระบบล่าสุด ถูกจัดรูปแบบ คุณอาจต้องใส่นิพจน์เพื่อจัดรูปแบบด้วย (คล้ายกับการแปลงไฟล์ วันที่เข้าสู่ระบบ เวลาไฟล์).

ขนาดข้อมูลแบบสอบถาม LDAP

รายการไฟล์ด้านล่างแสดงความแตกต่างของขนาดข้อมูลหากฉันส่งคืนเพียง ชื่อ และ วันที่เข้าสู่ระบบล่าสุด ของคอมพิวเตอร์เครื่องหนึ่งเป็น "comp1.txt" เทียบกับคุณสมบัติของคอมพิวเตอร์เครื่องเดียวกันทั้งหมดเป็น "comp2.txt" คูณด้วยจำนวนเครื่องที่มีการสืบค้น - เป็นเรื่องง่ายมากที่จะเห็นว่าเหตุใดการสืบค้นจึงใช้เวลานานกว่ามากเมื่อลากข้อมูลที่ไม่จำเป็นออกจาก AD และทั่วทั้งเครือข่าย

ชื่อโหมด LastWriteTime ความยาว
---- ------------- ------ ----
-a---- 2022-02-14 18:41 894 comp1.txt
-a---- 2022-02-14 18:42 69736 comp2.txt

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา