PowerShell

How to get All Site Collections on each SharePoint Content Database using Powershell

This short post can help you get all the report you need for your IT Managers. Have you ever been asked how many databases you have for your SharePoint Farm? That is easy go get. Just open SharePoint 2010/2013 Management Shell and type Get-SPDatabase. This will list all the databases configured for your SharePoint farm. The powershell needs to run on any of the SharePoint Servers with farm admin account or any user with farm admin priviledge. The purpose of this post is not this.

This short post explains how to get all content databases, and for each of the content databases, it will show you the site collections within this content database, as it contains only 1 line of PowerShell code, and is not very hard to understand.

Here is your one line of Script

Get-SPContentDatabase | %{Write-Output “- $($_.Name)”; foreach($site in $_.sites){write-Output $site.url}}

And the following is the screenshot of the output of the script from my SharePoint 2013 test farm.

2016-04-27_10-42-51

 

Hope this helps

Enjoy #Powershell

Tesfaye Gari tesfaye.gari@gmail.com OR @tesfayegari

How to Export SharePoint 2010/2013 Version history of Document Library using PowerShell

Here is a powershell script you can use to get csv output of version history from SharePoint 2010 or 2013 list/libraries where versioning is enabled.The output includes changes to individual item fields as viewable from item version history.

The version information is accessed through SPListItemVersionCollection and SPFileVersionCollection objects.

$url  = yourSiteUrl #Example http://server.com/web
$web  = Get-SPWeb $url 
$docLibrary = "DocLibraryName" #Here use your document library name Ex SharedDocuments
$list = $web.Lists[$documenntLibrary] 
$csvFile = "C:\temp\versionHistory.csv" #Where the CSV file is saved 
 
function GetFieldValue([Microsoft.SharePoint.SPField]$field, [Microsoft.SharePoint.SPListItemVersion]$currentVersion) 
{ 
    if(($field.Type -eq "User"-and ($currentVersion[$field.Title] -ne $null)) 
    { 
        $newUser = [Microsoft.SharePoint.SPFieldUser]$field; 
        $fieldStr = $newUser.GetFieldValueAsText($currentVersion[$field.Title]) 
        $fieldStr = "$($field.Title): $fieldStr" 
    } 
    elseif(($field.Type -eq "Lookup"-and ($currentVersion[$field.Title] -ne $null)) 
    { 
        $newLookup = [Microsoft.SharePoint.SPFieldLookup]$field; 
        $fieldStr = $newLookup.GetFieldValueAsText($currentVersion[$field.Title]) 
        $fieldStr = "$($field.Title): $fieldStr" 
    } 
    elseif(($field.Type -eq "ModStat"-and ($currentVersion[$field.Title] -ne $null)) 
    { 
        $newModStat = [Microsoft.SharePoint.SPFieldModStat]$field; 
        $fieldStr = $newModStat.GetFieldValueAsText($currentVersion[$field.Title]) 
        $fieldStr = "$($field.Title): $fieldStr" 
    } 
    else 
    {                             
        $fieldStr = "$($field.Title): $($currentVersion[$field.Title])" 
    } 
    return $fieldStr 
}      
 
#Create/overwrite csv file, add headers: 
Set-Content -Path $csvFile -Value ",No.,Modified,Modified By, Size, Comment`n" 
 
foreach($item in $list.Items) 
{ 
    $versions = $item.Versions 
    $versionStr = "$($item["Title"])`n" 
     
    for($i = 0; $i -lt $versions.Count; $i++) 
    { 
        $currentVersion = $versions[$i] 
        $checkInComment = $item.File.Versions[$item.File.Versions.Count - $i].CheckInComment 
        if($i -eq 0) 
        { 
            $fileSize = $item.File.Length 
        } 
        else 
        { 
            $fileSize = $item.File.Versions[$item.File.Versions.Count - $i].Size 
        } 
        if($fileSize -lt 1MB) 
        { 
            $fileSize = "{0:N1}" -f ($fileSize / 1KB) + " KB" 
        } 
        else 
        { 
            $fileSize = "{0:N1}" -f ($fileSize / 1MB) + " MB" 
        } 
        $modifiedTime = $web.RegionalSettings.TimeZone.UTCToLocalTime($currentVersion.Created) 
        # CSV formatting: escape double quotes allow quotations, new line and commas within cell. Do not use space between comma and double quote escapes due to csv formating. 
        $versionStr +",$($currentVersion.VersionLabel),$($modifiedTime),""$($currentVersion.CreatedBy.User.DisplayName)"",""$($fileSize)"",""$($checkInComment)"",`n" 
 
        if($i -lt ($versions.Count - 1)) 
        { 
            # If more than one version: 
            $previousVersion = $versions[$i+1] 
            foreach($field in $currentVersion.Fields) 
            { 
                if(($field.ShowInVersionHistory -eq $true-and ($currentVersion[$field.Title] -ne $previousVersion[$field.Title]) -and ($currentVersion[$field.Title] -ne "

)) 
                { 
                    $fieldStr = GetFieldValue $field $currentVersion 
                    $versionStr +=",,""$fieldStr""`n" 
                } 
            } 
        } 
        else 
        { 
            # If first version: 
            foreach($field in $currentVersion.Fields) 
            { 
                if(($field.ShowInVersionHistory -eq $true-and ($currentVersion[$field.Title] -ne "

)) 
                { 
                    $fieldStr = GetFieldValue $field $currentVersion 
                    $versionStr +=",,""$fieldStr""`n" 
                } 
            } 
        } 
    } 
    #Append to file: 
    Add-Content -Path $csvFile -Value $versionStr 
} 
 
$web.Dispose() 

Please let me know if you have any question. The file must be saved as .ps1 extension and can be executed
contact me on tesfaye.gari@gmail.com for any quesiton 

Thanks 
Tesfaye Gari

ADDRESS

6066 Leesburg Pike Ste 320
Falls Church, Virginia 22044
Phone: (240) 547-6851

About MTM

MTM Training and Consulting is started by a group of highly qualified and motivated Information Technology Professionals to help you boost your IT career, and your company's productivity