Engineering · Common · Sitecore

PowerShell scripts to get Sitecore User information

Sometimes we might need to get Sitecore user information in detail. The information isn’t always in the same place, so different scripts are handy for extracting different details.

Get the user ID, domain, and whether the user is an admin
Script:

Get-User -Filter "munir.hassan@*.com"

.

Output:

Name                     Domain       IsAdministrator IsAuthenticated IsEnabled
----                     ------       --------------- --------------- ---------
sitecore\Munir           sitecore     True            False           True

.

Get the user’s roles
Script:

Get-User -Filter "sk\bk_nomedia" | Select-Object -ExpandProperty Roles

.

Output:

Name                                     Domain       IsEveryone
----                                     ------       ----------
sk\tes Exm User                          sk           False
sk\No Media Uploader                     sk           False

.

Get all properties
Script:

Get-User -Filter "sitecore\mu*" | Select-Object -Property *

.

Output:

IsEnabled       : True
Roles           :
MemberOf        :
Delegation      : Sitecore.Security.Accounts.UserDelegation
Domain          : sitecore
IsAdministrator : True
IsAuthenticated : False
LocalName       : Munir
Profile         : Sitecore.Security.UserProfile
RuntimeSettings : Sitecore.SecurityModel.UserRuntimeSettings
Identity        : Sitecore.Security.Principal.SitecoreIdentity
AccountType     : User
Description     : User
DisplayName     : sitecore\Munir
Name            : sitecore\Munir

.

Get the user’s profile details
Script:

Get-User -Filter "sitecore\mu*" | Select-Object -ExpandProperty Profile

.

Output:

ClientLanguage     :
Comment            :
ContentLanguage    :
Culture            : en-US
Email              : Munir.Hassan@xyz.com
FullName           : Munir Hassan
Icon               :
IsAdministrator    : True
LegacyPassword     :
ManagedDomainNames :
Notifications      :
EngagementValue    :
CurrentPosition    :
Badges             :
Name               :
Portrait           : office/16x16/default_user.png
ProfileItemId      : {D54D9A36-11BB-4086-A045-53729AD393FF}
ProfileUser        : Sitecore.Security.Accounts.User
RegionalIsoCode    :
SerializedData     : {[digestcredentialhash, 9f84ad4fdd2bbb7d2f103d0f8e996a49], [digestcredentialhashwithoutdomain, 4114d0930e819d5819b7019539403cbc], [/sitecore\munir/Ribbon/My Strip, {D33A0641-9F1C-4984-8342-0655C3D0F123}],
                     [SpeakComponentStatus-CrossPagesNavigationStatus-1950632152BB4E39ACA3EAEB8E926F78, [{"id":"{9837BB1B-CA0E-4694-B1DB-AE18D2951EA0}"},{"id":"{B9477621-68D4-4152-A7B0-941BCAB68C6B}"}]]...}
StartUrl           :
State              :
UserName           : sitecore\Munir
IsAnonymous        : True
IsDirty            : False
LastActivityDate   : 5/10/2021 11:51:57 AM
LastUpdatedDate    : 1/10/2021 3:54:59 PM
Properties         : {Portrait, Name, StartUrl, Icon...}
Providers          : {disabled, sql, switcher}
PropertyValues     : {ProfileUser, IsAdministrator, Icon, Portrait...}
Context            : {UserName, IsAuthenticated}
IsSynchronized     : False

.

Get the user’s creation date, last login, and whether the user is locked out
Script:

$property = @(
    @{Label="User Name"; Expression={ $_.UserName} },
    @{Label="Email"; Expression={ $_.Email} },
    @{Label="Comment"; Expression={ $_.Comment} },
    @{Label="Locked"; Expression={ $_.IsLockedOut } },
    @{Label="Created"; Expression={ $_.CreationDate} },
    @{Label="Last Login"; Expression={ $_.LastLoginDate} }
    )

[System.Web.Security.Membership]::GetAllUsers() | Where-Object { $_.UserName -like  "sitecore\munir"} |

Select-Object -Property $property 

.

Output:

User Name  : sitecore\Munir
Email      : Munir.Hassan@xyz.com
Comment    :
Locked     : False
Created    : 24/08/2020 5:07:15 AM
Last Login : 5/10/2021 1:44:28 AM

.

Get whether the user is online, their last activity and other information
Script:

[System.Web.Security.Membership]::GetAllUsers() | Where-Object { $_.UserName -like  "sitecore\mu*"} |

Select-Object -Property *

.

Output:

Comment                 :
CreationDate            : 24/08/2020 5:07:15 AM
Email                   : Munir.Hassan@xyz.com
InnerUser               : sitecore\Munir
IsApproved              : True
IsLockedOut             : False
LastActivityDate        : 1/10/2021 5:53:14 AM
LastLockoutDate         : 1/01/1754 12:00:00 AM
LastLoginDate           : 1/10/2021 5:53:14 AM
LastPasswordChangedDate : 19/04/2021 5:28:32 AM
PasswordQuestion        :
ProviderName            : sitecore
ProviderUserKey         : 381e39c0-ee0e-45f5-a3ae-d9c9d772363f
UserName                : sitecore\Munir
IsOnline                : True

.

There could be hundreds of users, and you may need their information in a CSV file
Script:

Get-User -Filter "sitecore\*" | Export-CSV -Path "$apppath\sitecoreUserInfo.csv" -Append -NoTypeInformation
Download-File  "$apppath\sitecoreUserInfo.csv"

.

Output: A dialog appears so you can download the CSV.

Thanks
Munir