param( [Parameter(Mandatory=$true)] [string]$url ) function Write-Log($msg) { Write-Host $msg -foregroundcolor green ($msg) | Out-File "log-enum-users.txt" -Append } function ContainsUser($users, $loginName) { foreach ($user in $users) { if ($user.LoginName.ToLower() -eq $loginName.ToLower()) { return $true } } return $false } $users = New-Object System.Collections.ArrayList $site = Get-SPSite $url foreach ($user in $site.RootWeb.AllUsers) { if ([System.String]::IsNullOrEmpty($user.Email)) { $users.Add($user) > $null } } foreach ($user in $site.RootWeb.SiteUsers) { $contains = ContainsUser $users $user.LoginName if ([System.String]::IsNullOrEmpty($user.Email) -and (-not $contains)) { $users.Add($user) > $null } } foreach ($user in $users) { Write-Log($user.LoginName) }