[CmdletBinding()] Param( [string]$PropertyConstant ) [Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") | out-null $centralAdmin = [Microsoft.SharePoint.Administration.SPAdministrationWebApplication]::Local $secureToken = $centralAdmin.ServiceApplicationProxyGroup.Proxies | Where-Object {$_ -is [Microsoft.Office.SecureStoreService.Server.SecureStoreServiceApplicationProxy] } # # UserProfiles # $centralAdmin = [Microsoft.SharePoint.Administration.SPAdministrationWebApplication]::Local $siteUrl = $null foreach($url in $centralAdmin.AlternateUrls) { if ($url.UrlZone -eq [Microsoft.SharePoint.Administration.SPUrlZone]::Default) { $siteUrl = $url.Uri.AbsoluteUri; } } if ($siteUrl -eq $null) { Write-Host "Unable to find local farm Url. Halting." Break; } $site = New-Object Microsoft.SharePoint.SPSite($siteUrl) $profileManager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager([Microsoft.SharePoint.SPServiceContext]::GetContext($site)) Write-Host "`nLoading profiles" -nonewline $report = @() $i = 0 foreach($profile in $profileManager.GetEnumerator()) { $accountName = $profile[[Microsoft.Office.Server.UserProfiles.PropertyConstants]::AccountName].Value.toLower() $workMail = $profile[[Microsoft.Office.Server.UserProfiles.PropertyConstants]::$PropertyConstant].Value.toLower() $report += new-object -typename psobject -property @{UserName = $accountName; WorkMail = $workMail} if ($i % 100 -eq 0) { Write-Host "." -nonewline -foregroundcolor yellow; } $i = $i + 1 } $timestamp = ([datetime]::Now).ToString("yyyy-MM-dd_hh-mm") $outPath = "UserProfile Report $timestamp.csv" $report | Export-csv $outPath -NoTypeInformation $site.Dispose()