【发布时间】:2021-10-28 03:10:16
【问题描述】:
我想为 OU 中的所有用户以及他们的经理以人类可读的形式获取 LastLogon。通常人们会登录到本地域控制器服务器 - 所以如果我可以限制只检查本地一个 DCLocal 就可以了。
所以我有这个(注意我有 TimeStamp - 我不想要这个,因为它与可能的合规性相差太远 - 我需要在 1 天内而不是 14 和 19 但 1 天内准确。
Get-ADUser -Filter {enabled -eq $true} -SearchBase "OU=STAFF,OU=MINE,DC=mine,DC=local"
-ResultPageSize 0 -Prop CN,lastLogonTimestamp | Select CN,@{n="lastLogonTimeStamp";e=
{[datetime]::FromFileTime($_.lastLogonTimestamp)}} | Export-CSV -NoType c:\temp\lastLogin.csv
我无法弄清楚如何做到这一点,我看过这个PowerShell Script to Return Employee's Manager and their Manager (x5) 我不确定如何将它与我所拥有的相结合。
如何执行这两个功能 [LastLogon 和 Manager] 并将域控制器限制在本地框和 OU 中,就像我在示例代码中所做的那样。
听从亚伯拉罕的以下建议 我试过了
Get-ADUser -Filter {enabled -eq $true} -Server MYLDC01
-SearchBase "OU=STAFF,OU=MINE,DC=mine,DC=local"
-ResultPageSize 0 -Prop CN,LastLogon, Manager | Select
CN,@{n="LastLogon";e={[datetime]::FromFileTime($_.LastLogon)}
, Manager} | Export-CSV -NoType c:\temp\lastLogon.csv
结果
Missing expression after ','.
At line:1 char:238
+ ... astLogon";e={[datetime]::FromFileTime($_.LastLogon)}, Manager} | Expo ...
+
~~~~~~~
Unexpected token 'Manager' in expression or statement.
【问题讨论】:
-
您需要查询每一个域控制器来计算
LastLogonTimestamp的实际值 -
将
Manager添加到要查询的属性字段中,然后将其与其余选定项一起选择。为了获得更好的输出,请将其放在计算属性中并改为查询显示名称。lastlogon属性也一样,只需将datetime上的方法更改为正确的 UTC 时间转换。此外,Get-ADUsercmdlet 只查询一台服务器,而不是多台服务器。您还可以使用-Server参数指定要从哪一个查询。 -
@AbrahamZinala 你有你告诉我的样本吗 - 我不是 powershell 大师:会是 -prop CN,lastLogonTimestamp, Manager, Select {m=manager, n=blah . -Server 在我的 -SearchBase 之后去哪里?然后转换日期(LastLogon 是数字 - 到 UTC 怎么做?)
-
@MathiasR.Jessen - 如前所述,我不想要 LastLogonTimeStamp - 只是 LastLogon - 我发布了我所拥有的可运行代码。
-
您已将 manager 属性包含在
lastlogon计算属性中。将两者分开,除此之外,看起来不错。
标签: powershell active-directory