Sitecore Powershell:查找用户上次登录?

我正在编写一个非常简单的Sitecore Power
Shell脚本来报告我们系统中的所有用户.我们想知道每个用户的最后登录日期,但我没有运气.我可以访问$_.Profile.LastActivityDate,但这没有用,因为它看起来对所有用户都是相同的值.任何想法是什么表达式访问上次登录日期,或我如何找到它?谢谢.

Get-User -Filter * |

Show-ListView -Property @{Label="User"; Expression={ $_.Profile.UserName} },
    @{Label="Full Name"; Expression={ $_.Profile.FullName} },
    @{Label="Email"; Expression={ $_.Profile.Email} },
    @{Label="Logged In"; Expression={ $_.Profile.LastActivityDate } }

Close-Window

最佳答案
Get-User将输出一个或多个Sitecore.Security.Accounts.User,其Profile属性是Sitecore.Security.UserProfile,它继承自System.Web.Profile.ProfileBase.因此,LastActivityDate属性应该与访问Sitecore之外的配置文件相同.

也就是说,只需访问配置文件数据就有可能更新上一个活动日期.

The LastActivityDate for a user is updated by the classes in the
System.Web.Profile and the System.Web.UI.WebControls.WebParts
namespaces whenever user data is retrieved from or set at the data
source. …

因此,您可以避免访问配置文件,而是检索MembershipUsers. MembershipUser有一个名为LastLoginDate的属性,我认为你正在追求的是:

[System.Web.Security.Membership]::GetAllUsers() |

Show-ListView -Property @{Label="User"; Expression={ $_.UserName} },
    @{Label="Is Online"; Expression={ $_.IsOnline} },
    @{Label="Creation Date"; Expression={ $_.CreationDate} },
    @{Label="Last Login Date"; Expression={ $_.LastLoginDate} },
    @{Label="Last Activity Date"; Expression={ $_.LastActivityDate } }

如果您需要访问配置文件而不更新上次活动日期,您还可以尝试:

[System.Web.Security.Membership]::GetUser("sitecore\admin", $false)
点赞