Lastlogon กับ LastLogonTimestamp กับ LastLogondate
ข้อแตกต่างหลักระหว่าง lastlogon และ lastLogonTimeStamp คือ Lastlogon จะได้รับการอัปเดตบน Domain Controller หลังจากการเข้าสู่ระบบแบบโต้ตอบของผู้ใช้ ในขณะที่ lastLogonTimeStamp ถูกจำลองแบบ ไปยัง Domain Controller ทั้งหมด ใน AD Forest ค่าเริ่มต้นคือ 14 วัน แอตทริบิวต์ Lastlogon ไม่ได้ถูกจำลองแบบ
ในขณะที่ทำงานกับวัตถุ Active Directory ส่วนใหญ่เราต้องสืบค้นเพื่อรับวัตถุโดยใช้ DateTime
การทำความเข้าใจความแตกต่างระหว่างแอตทริบิวต์ PowerShell lastLogon กับ LastLogonTimestamp กับ LastLogonDate เป็นเรื่องที่น่าสับสนมาก
ใน Active Directory วัตถุมีแอตทริบิวต์ Lastlogon เช่น LastLogon, LastLogonTimestamp และ LastLogondate
ในบทความนี้ ฉันจะพยายามอธิบายความแตกต่างระหว่างแอตทริบิวต์ PowerShell LastLogon กับ LastLogonTimestamp กับ LastLogondate ใน Active Directory และวิธีการแปลง get-aduser Lastlogon ให้เป็นปัจจุบัน
มาทำความเข้าใจแอตทริบิวต์การเข้าสู่ระบบครั้งสุดท้ายโดยละเอียดพร้อมตัวอย่างการใช้ PowerShell
PowerShell LastLogon
เมื่อผู้ใช้เข้าสู่ระบบคอมพิวเตอร์ แอตทริบิวต์ LastLogon จะอัปเดตในตัวควบคุมโดเมน
แอตทริบิวต์ LastLogon ได้รับการอัปเดตใน DC หนึ่งตัวหลังจากการเข้าสู่ระบบแบบโต้ตอบของผู้ใช้ หมายความว่าแอตทริบิวต์ LastLogon จะไม่ถูกจำลองแบบ
LastLogon มีประโยชน์อย่างมากในการระบุบัญชีเก่า หรือหากคุณต้องการทราบว่าผู้ใช้คอมพิวเตอร์เครื่องใดเข้าสู่ระบบแล้ว
เมื่อเรารันคำสั่ง มันจะส่งคืนการประทับเวลาการเข้าสู่ระบบล่าสุดของตัวควบคุมโดเมนที่ผู้ใช้เข้าสู่ระบบแบบโต้ตอบ
PowerShell LastLogon ส่งคืนการประทับเวลาการเข้าสู่ระบบล่าสุดของผู้ใช้โฆษณาในรูปแบบตัวเลขซึ่งมนุษย์ไม่สามารถอ่านได้ และจำเป็นต้องแปลงเป็นรูปแบบการประทับเวลาวันที่
สคริปต์ต่อไปนี้แปลง Get-AdUser Lastlogon เป็นวันที่
Get-ADUser -Identity Toms -Properties LastLogon | Select Name, @{Name='LastLogon';Expression={[DateTime]::FromFileTime($_.LastLogon)}}ในสคริปต์ PowerShell ข้างต้น Get-AdUser cmdlet รับคุณสมบัติผู้ใช้ที่ระบุโดยพารามิเตอร์ Identity และส่งเอาต์พุตไปยังคำสั่งที่สอง
@{Name=’LastLogon’;Expression={[DateTime]::FromFileTime($_.LastLogon)}} - แปลงรูปแบบตัวเลข Lastlogon ของผู้ใช้โฆษณาเป็นการประทับเวลาของวันที่
PowerShell LastLogonTimestamp
แอตทริบิวต์ PowerShell LastLogonTimestamp ถูกจำลองแบบไปยังตัวควบคุมโดเมนทั้งหมด
เพื่อป้องกันการรับส่งข้อมูลการจำลองทุกครั้งที่ผู้ใช้เข้าสู่ระบบ ค่าจะถูกอัปเดตหลังจากช่วงเวลาหนึ่ง
Active Directory คำนวณช่วงเวลาในการอัปเดตค่า PowerShell LastLogonTimestamp ค่าการอัปเดตเริ่มต้นคือ 14 วัน
แอตทริบิวต์ ms-DS-Logon-Time-Sync-Interval กำหนดค่าเริ่มต้น LastLogonTimestamp หากไม่ได้ตั้งค่า ค่าการอัปเดตเริ่มต้นคือ 14 วัน
PowerShell LastLogonTimestamp เป็นเวอร์ชันที่จำลองแบบของ LastLogon
โดยจะส่งคืนการประทับเวลาการเข้าสู่ระบบครั้งล่าสุดในรูปแบบตัวเลขซึ่งไม่ใช่รูปแบบที่มนุษย์สามารถอ่านได้ และจำเป็นต้องแปลงการประทับเวลาการล็อกออนครั้งสุดท้ายให้เป็นปัจจุบัน
PowerShell LastLogonDate
แอตทริบิวต์ lastLogonDate คือ ค่าที่คำนวณในเครื่องของแอตทริบิวต์ lastLogonTimestamp ในรูปแบบวันที่
การเขียนการสืบค้นแบบวันที่-เวลาด้วย PowerShell LastLogonDate เป็นเรื่องง่ายมาก เมื่อเราต้องการสืบค้นวัตถุ Active Directory หรือค้นหารายละเอียดวัตถุ Active Directory โดยใช้แอตทริบิวต์ lastLogonTimestamp
LastLogon เทียบกับ LastLogonTimestamp เทียบกับ LastLogonDate
มาทำความเข้าใจความแตกต่าง lastLogon กับ LastLogonTimestamp กับ LastLogonDate ในไดเร็กทอรีที่ใช้งานอยู่พร้อมตัวอย่าง
ลองพิจารณาตัวอย่างเพื่อรับรายละเอียดผู้ใช้ไดเรกทอรีที่ใช้งานอยู่โดยใช้ Get-ADUser cmdlet
เมื่อผู้ใช้เข้าสู่ระบบคอมพิวเตอร์ในไดเร็กทอรีที่ใช้งานอยู่ ระบบจะจัดเก็บข้อมูลการประทับเวลาวันที่เข้าสู่ระบบไว้ในแอตทริบิวต์
Get-AdUser -Identity johnp -Properties * | Select DisplayName,LastLogon,LastLogonDate,LastLogonTimeStampในสคริปต์ PowerShell ข้างต้น
Get-ADUser cmdlet ส่งคืนคุณสมบัติผู้ใช้ไดเรกทอรีที่ใช้งานอยู่ซึ่งระบุโดยพารามิเตอร์ Identity และส่งเอาต์พุตไปยังคำสั่งที่สอง
คำสั่งที่สอง เลือกชื่อ, DistinguishedName, LastLogon, LastLogonTimestamp และ LastLogonDate จากคุณสมบัติผู้ใช้ไดเร็กทอรีที่ใช้งานอยู่ และพิมพ์ลงบนคอนโซล
Name LastLogon LastLogonDate LastLogonTimeStamp
---- --------- ------------- ------------------
John Paul 132722084016061942 7/29/2021 7:10:42 PM 132720594421239827ในเอาต์พุตด้านบน แอตทริบิวต์ LastLogon และ LastLogonTimestamp มีเอาต์พุตรูปแบบที่มนุษย์ไม่สามารถอ่านได้ และต้องมีการแปลง
หากต้องการแปลง Lastlogontimestamp เป็นวันที่ ให้ใช้ [DateTime]:: FromFileName ในนิพจน์ และระบุ Lastlogontimestamp สำหรับการแปลงเป็นวันที่
หากต้องการแปลง Lastlogon เป็นวันที่ ให้ใช้ [DateTime]:: FromFileName ในนิพจน์ และระบุ Lastlogontimestamp สำหรับการแปลงเป็นวันที่
หลังจากใช้การแปลงรูปแบบ DateTime ในสคริปต์ PowerShell ให้แปลง Lastlogontimestamp เป็นวันที่
Get-AdUser -Identity johnp -Properties * | Select DisplayName,@{Name='LastLogon';Expression={[DateTime]::FromFileTime($_.LastLogon)}},LastLogonDate,@{Name='LastLogonTimestamp';Expression={[DateTime]::FromFileTime($_.LastLogonTimestamp)}}ในสคริปต์ด้านบนเพื่อแปลง Lastlogontimestamp เป็นวันที่ รูปแบบ get-aduser Lastlogontimestamp คือตัวเลข
การใช้ [DateTime]::FromFileTime($_.lastlogonTimestamp) จะแปลงผู้ใช้โฆษณา Lastlogontimestamp เป็น datetime
ผลลัพธ์ของสคริปต์ PowerShell ข้างต้นสำหรับ LastLogon เทียบกับ LastLogonTimestamp เทียบกับ LastLogonDate
ในภาพด้านบน คุณสามารถเห็นความแตกต่างระหว่างค่าแอตทริบิวต์ lastLogon และ LastLogonTimestamp
lastLogonTimestamp แอตทริบิวต์ผู้ใช้บันทึกค่าที่ไม่ได้รับการอัปเดตในตัวควบคุมโดเมน
ไดเรกทอรีที่ใช้งานอยู่ทำการคำนวณเพื่ออัปเดต DateTime เพื่อป้องกันการรับส่งข้อมูลการจำลองแบบ
ตามที่กล่าวไว้ข้างต้น PowerShell LastLogonDate คือค่าที่คำนวณในเครื่องของ LastLogonTimestamp ในรูปแบบวันที่-เวลา
เคล็ดลับเด็ด: วิธีทำให้ผู้ใช้โฆษณาไม่เข้าสู่ระบบ x วันใน PowerShell!
แปลง LastLogonTimestamp เป็นวันที่ใน PowerShell
แอตทริบิวต์lastLogonTimestampของผู้ใช้ไดเรกทอรีที่ใช้งานอยู่จะเก็บการประทับเวลาการเข้าสู่ระบบล่าสุด การประทับเวลานี้คือจำนวนช่วงเวลา 100 นาโนวินาทีตั้งแต่วันที่ 1 มกราคม 1601 UTC
แอตทริบิวต์ LastLogonTimestamp จะจัดเก็บการประทับเวลาการเข้าสู่ระบบล่าสุดในรูปแบบประเภทข้อมูล System.Int64
หากต้องการแปลง LastLogonTimestamp เป็น DateTime โดยใช้ PowerShell ให้ใช้ขั้นตอนด้านล่าง
- ใช้คลาส DateTime และเรียกใช้เมธอด FromFileTime โดยใช้ตัวดำเนินการแก้ไขขอบเขต ::
- วิธีการ FromFileTime ใช้แอตทริบิวต์ LastLogonTimestamp ของผู้ใช้ไดเรกทอรีที่ใช้งานอยู่เป็นพารามิเตอร์อินพุต
- Expression จะประเมิน
[DateTime]::FromFileTime($_.LastLogonTimestamp)ให้อยู่ในรูปแบบที่มนุษย์สามารถอ่านได้ และแปลง LastLogonTimestamp เป็นวันที่ใน PowerShell
ตัวอย่าง Get-AdUser แปลง LastLogonTimestamp ให้เป็นวันที่ได้รับด้านล่าง:
Get-AdUser -Identity Toms -Properties * | Select DisplayName,@{Name='LastLogonTimestamp';Expression={[DateTime]::FromFileTime($_.LastLogonTimestamp)}}ผลลัพธ์ข้างต้นใน PowerShell จะแปลง Lastlogontimestamp เป็น DateTime ในรูปแบบที่มนุษย์สามารถอ่านได้สำหรับค่า Lastlogontimestamp ที่ 132975302840000000 คือ:
DisplayName LastLogonTimestamp
---- ---------------
Tom Smith 5/22/2022 2:24:44 PMเคล็ดลับเด็ด: วิธีแปลง Lastlogontimestamp เป็นวันที่ใน SQL!
บทสรุป
ฉันหวังว่าบทความข้างต้นเกี่ยวกับแอตทริบิวต์ PowerShell LastLogon เทียบกับ LastLogonTimestamp เทียบกับ LastLogonDate และการแปลง Lastlogon เป็นวันที่สำหรับผู้ใช้โฆษณาจะเป็นประโยชน์สำหรับคุณ
คุณสามารถค้นหาหัวข้อเพิ่มเติมเกี่ยวกับคำสั่ง PowerShell Active Directory และพื้นฐาน PowerShell ได้ในหน้าแรกของ ShellGeek

