ค้นหาเว็บไซต์

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

บทความที่เกี่ยวข้อง