List all users used inside SharePoint farm, and export them to .csv file.
# ----------------------------------------------
# Author: Romain Blanchard
# Date: 02.03.2015
# Description: List all users used inside SharePoint farm, and export them to .csv file.
# ----------------------------------------------
# Initialize
$null = [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
# Initialize log file
$date = Get-Date -Format yyyy-MM-d-HHmmss
$logfile = "RBLA_AllUsers_" + $date + ".txt"
Start-Transcript -Path $logfile -Force | Out-Null
# Initialize csv file
$csv = "RBLA_AllUsers_" + $date + ".csv"
Write-Output "Site Collection URl;User" | Out-File -FilePath $csv -Append
# Script
Write-Host "Exporting users." -NoNewLine
# Get all Web Application in the farm
$Farm = [Microsoft.SharePoint.Administration.SPFarm]::Local
$websvcs = $Farm.Services | where -FilterScript {$_.GetType() -eq [Microsoft.SharePoint.Administration.SPWebService]}
$webapps = @()
foreach ($websvc in $websvcs)
{
# Process all Web Application
foreach ($WebApp in $websvc.WebApplications)
{
# Process all Site Collection
foreach ($SiteCollection in $WebApp.Sites)
{
Write-Host "." -NoNewLine
# Process all Site Groups
foreach ($Group in $SiteCollection.RootWeb.SiteGroups)
{
# Process all users
foreach ($User in $Group.Users)
{
Write-Output "$($SiteCollection.Url);$($User.LoginName)" | Out-File -FilePath $csv -Append
}
}
}
}
}
Write-Host " done!" -ForegroundColor green
# Write log file
Stop-Transcript | Out-Null
$log = Get-Content $logfile
$log > $logfile.Replace('txt','log')
Remove-Item $logfile -Confirm:$false