有没有办法在Powershell中拉取用户属性列表

问题描述 投票:0回答:1

我需要监控用户在 Active Directory 中的上次登录情况。我使用以下脚本将用户的 Lastlogon 属性设置为变量。

$user1logon = (获取 ADUser - 身份 $用户名 - 属性lastlogonTimestamp).lastlogonTimestamp

当我回显此变量时,它为我的测试用户返回值 133340258148779315。我认为这是 Unix 时间?

为了使其可读,我尝试使用以下内容进行转换。

$reallogon = (获取日期 01.01.1970).AddSeconds($user1logon)
($reallogon).ToString("yyyy-MM-dd HH:mm:ss.ffffff")

运行时返回此错误消息

使用“1”个参数调用“AddSeconds”时出现异常:“要添加的值超出范围。 参数名称:值” 在行:1 字符:1

  • $reallogon = (获取日期 01.01.1970).AddSeconds($user1logon)
  •   + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
      + FullyQualifiedErrorId : ArgumentOutOfRangeException
    
    

您不能对空值表达式调用方法。 在行:2 字符:1

  • ($reallogon).ToString("yyyy-MM-dd HH:mm:ss.ffffff")
  •   + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
      + FullyQualifiedErrorId : InvokeMethodOnNull
    
    

我不太确定如何修复它,因为我是脚本编写和 Powershell 的新手,任何帮助将不胜感激!

尝试从 Active Directory 中提取上次登录日期的列表

powershell active-directory
1个回答
1
投票

LastLogonTimeStamp
属性FileTime中表示,要将其转换为
datetime
实例,您可以使用
FromFileTimeUtc
方法
:

[datetime]::FromFileTimeUtc(133340258148779315)

# or to get a string in the desired format:
[datetime]::FromFileTimeUtc(133340258148779315).ToString('yyyy-MM-dd HH:mm:ss.ffffff')

顺便说一句,不建议依靠

LastLogonTimeStamp
来查找用户的上次登录情况,您应该使用
lastLogon
属性
查询所有域控制器以获得准确的结果。有关详细信息,请参阅此答案

© www.soinside.com 2019 - 2024. All rights reserved.