With increasing SharePoint 2013 customizations
with new app model, there are incidents that these
customizations are not working correctly in production while they are working
on non-production environments. As SharePoint architect, I’m working with the
team to come up an deployment auditing process to ensure what we deployed is
what we should deployed. This auditing process will reports the details of the
customization components especially the version labels that has been beneficial
for deployment verification and debugging. Here are some the auditing reports
that have helped to eliminated any customization environment discrepancies.
param([string]$siteUrl)
$snapin = Get-PSSnapin | Where-Object {$_.Name -eq 'Microsoft.SharePoint.Powershell'}
if ($snapin -eq $null) {
Add-PsSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
}
############################################################################################################################################
function ListApps([string] $siteUrl, [string]$reportName)
{
$appInstances = Get-SPappinstance -web $siteUrl
if($appInstances -ne $null)
{
foreach ($eachAppInstance in $appInstances)
{
$title = $eachAppInstance.Title
$version = $eachAppInstance.App.VersionString
$AppPrincipalId = $eachAppInstance.AppPrincipalId
$Id = $eachAppInstance.Id
Write-Output "$title; $version; $Id; $AppPrincipalId"| Out-File $reportName -append
}
}
}
############################################################################################################################################
ListApps https://sharepoint.mycompany.com/sites/criticalsite E:\Applist.txt
The result is like below and you could comapre the result across different environments. There are references you could use for different app API.
2. Audit any customized dlls and the versions. Here are some powershell commands.
This one will list ALL dlls inside the current directory recursively.
Get-ChildItem
-Filter *.dll
-Recurse | Select-Object -ExpandProperty
VersionInfo
This one will list only the named dll.
Get-ChildItem
-Filter *.dll
-Recurse | Where-Object {$_.name -Match "mycompany.com.sp.application1.common.dll"} | Select-Object -ExpandProperty VersionInfo
3. Audit all farm solutions and their status. Here are the powershell commands.
Add-PSSnapin
Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
# Get all Solutions
deployed
Get-spsolution | select * |out-file
c:\solution.txt
# Connect to the Farm
$SPfarm
= [Microsoft.SharePoint.Administration.SPFarm]::get_Local()
# What Solution are we
looking for?
$solution
= "mycompany.com.sp.apps.workflows.wsp";
# Get the solutions
$currentSolution
= $SPfarm.get_Solutions() |
Where-Object { $_.DisplayName -eq
$solution; }
$currentSolution;
We are adding other auditing such as features, permission,
configurations at this time and will share those in the future.