| param ( |
| [string]$identity, |
| [switch]$summary = $false |
| ) |
| $ver = $host | select version |
| if ($ver.Version.Major -gt 1) {$host.Runspace.ThreadOptions = "ReuseThread"} |
| if ((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq $null) |
| { |
| Add-PSSnapin "Microsoft.SharePoint.PowerShell" |
| } |
| |
| Function OutputIdentity() { |
| $FQDN = [System.Net.Dns]::GetHostByName(($env:COMPUTERNAME)).HostName |
| $UserInfo = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name |
| Write-Output "diagnose_sp 1.0" |
| Write-Output "" |
| Write-Output "Local Time: $(Get-Date)" |
| Write-Output " UTC Time: $($(Get-Date).toUniversalTime())" |
| Write-Output "" |
| Write-Output "I am $($UserInfo) running on $($env:COMPUTERNAME) ($($FQDN))" |
| Write-Output "" |
| $wos = Get-WmiObject -class Win32_OperatingSystem |
| $os = $wos.Caption.Trim() |
| if ($wos.CSDVersion -ne $Null) { |
| $os = "$os - $($wos.CSDVersion)" |
| } |
| Write-Output "OS: $os" |
| Write-Output "" |
| } |
| |
| if ([string]::IsNullOrEmpty($identity) -eq $false) { |
| $virtualServers = Get-SPWebApplication -identity $identity | where {$_.IsAdministrationWebApplication -eq $false} | Select-Object Url |
| } else { |
| $virtualServers = Get-SPWebApplication | where {$_.IsAdministrationWebApplication -eq $false} | Select-Object Url |
| } |
| |
| OutputIdentity |
| |
| $allmembershipcount = 0 |
| $allgroupcount = 0 |
| $allitems = 0 |
| foreach ($url in $virtualServers) { |
| $webapp = Get-SPWebApplication -identity $url.Url |
| $virtualServer = $webapp.Url |
| [String]::Format("Web Application : {1} ({0})", $virtualServer, $webapp.Name); |
| [String]::Format("Sharepoint Version: {0}", $webapp.Farm.BuildVersion); |
| |
| try { |
| $contentdbs = Get-SPContentDatabase -webapplication $webapp.Url | Measure-Object; |
| } catch { |
| $contentdbs = Measure-Object |
| } |
| try { |
| $sitecolids = Get-SPSite -WebApplication $webapp.Url -limit all -ErrorAction Stop | Select-Object ID |
| $sitecols = $sitecolids | Measure-Object |
| } catch { |
| $sitecolids = $null |
| $sitecols = Measure-Object |
| } |
| |
| if ($summary -ne $true) { |
| "Number of Content DBs = " + $contentdbs.Count |
| "Number of Site Collections = " + $sitecols.Count |
| } |
| |
| if ($summary -ne $true) { |
| $mappings = $webapp.AlternateUrls |
| if ($mappings -eq $null -or $mappings.Count -eq 0) { |
| "Alternate Mappings: 0" |
| } else { |
| "Alternate Mappings: " + $mappings.Count |
| foreach($mapping in $mappings) { |
| $zone = $mapping.Zone |
| [String]::Format(" {0,8} {1}", $zone, $mapping.IncomingUrl); |
| $iis = $webapp.IisSettings[$zone] |
| if ($iis -ne $null) { |
| $authmode = $iis.AuthenticationMode |
| $anonymous = $iis.AllowAnonymous |
| $wia = $iis.UseWindowsIntegratedAuthentication |
| $kerberos = ($iis.DisableKerberos -eq $false) |
| $claims = $iis.UseClaimsAuthentication |
| $claimsforms = $iis.UseFormsClaimsAuthenticationProvider |
| $claimstrusted = $iis.UseTrustedClaimsAuthenticationProvider |
| $claimswindows = $iis.UseWindowsClaimsAuthenticationProvider |
| " Auth Mode: " + $authmode |
| " Use WIA: " + $wia |
| " Use Claims: " + $claims |
| if ($claims) { |
| " Use Claims Forms: " + $claimsforms |
| " Use Claims Windows: " + $claimswindows |
| " Use Claims Trusted: " + $claimstrusted |
| } |
| " Allow Kerberos: " + $kerberos |
| } |
| } |
| } |
| } |
| |
| |
| "" |
| if ($sitecolids -eq $null) { |
| continue |
| } |
| |
| $groupcount = 0 |
| $usercount = 0; |
| $membershipcount = 0; |
| foreach ($siteid in $sitecolids) { |
| if ($siteid -eq $null -or $siteid.Id -eq $null) { |
| continue |
| } |
| $site = Get-SPSite -identity $siteid.Id |
| $rootweb = [Microsoft.SharePoint.SPWeb]$site.RootWeb |
| [string]::Format("Site Name = {4} Site Url = {0} Users = {1} Groups = {2} RoleAssignments = {3}", $site.Url, $rootweb.SiteUsers.Count, $rootweb.SiteGroups.Count, $rootweb.RoleAssignments.Count, $rootweb.Title) |
| $groupcount = $rootweb.SiteGroups.Count; |
| |
| $membershipcount = 0 |
| foreach ($grp in $rootweb.SiteGroups) { |
| $membershipcount += $grp.Users.Count |
| } |
| |
| $allgroupcount += $groupcount |
| $allmembershipcount += $membershipcount |
| |
| if ($summary -ne $true) { |
| foreach($web in $site.AllWebs) { |
| $totallists = $web.Lists | Measure-Object |
| $versionedlists = $web.Lists | where { $_.EnableVersioning -eq $true} | Measure-Object |
| $itemcount = $web.Lists | Measure-Object -Property ItemCount -Sum |
| |
| if ($totallists.Count -gt 0) { |
| [string]::Format("Web --> {0}", $web.Url) |
| [string]::Format("Versioned Lists: {0} of {1}", $versionedlists.Count, $totallists.Count) |
| [string]::Format("Items: {0}", $itemcount.Sum) |
| $allitems += $itemcount.Sum |
| "" |
| } |
| $web.dispose() |
| } |
| |
| [string]::Format("# SP Groups = {0} # SP Memberships = {1}", $groupcount, $membershipcount) |
| "" |
| } |
| |
| $rootweb.dispose() |
| $site.dispose() |
| } |
| "" |
| } |
| [string]::Format("Global # SP Groups = {0} Global # SP Memberships = {1} Global # Items = {2}", $allgroupcount, $allmembershipcount, $allitems) |