Analyse sur l’utilisation des types de contenus documentaires en powershell


Après avoir listé la taille de chaque site, la taille des corbeilles, voici maintenant un script PowerShell permettant de connaître les l’utilisation de vos différents types de contenus dans vos bibliothèques de documents sur une collection de site.

En effet nous allons compter combien de document il y a par type de contenu et stocker le tout dans une hashtable qui sera affichée à la fin.

 A exécuter en tant qu’admin.



$webs = Get-SPSite -Identity http://yoursiteurl | get-spweb -Limit ALL
 
$contentTypesHash = @{"Document" = "0"}

foreach ($web in $webs)
{
  foreach ($lst in $web.lists)
  {
	if($lst.BaseType -eq [Microsoft.SharePoint.SPBaseType]::DocumentLibrary)
	{
		foreach ($item in $lst.Items)
		{
		  $currentCT = $item.ContentType.Name
		  if ($contentTypesHash.ContainsKey("$currentCT"))
		  {
			$count = [int]$contentTypesHash.Get_Item("$currentCT")
			$count++
			$contentTypesHash.Set_Item("$currentCT", $count)
		  }
		  else
		  {
			$contentTypesHash.Add("$currentCT", 1)			
		  }
		}
	}
  }
  $web.Dispose() 
}
start-transcript -path E:\AllCTs.txt 
$contentTypesHash.GetEnumerator() | Sort-Object Name
stop-transcript
Publicités

Obtenir la taille des corbeilles SharePoint en powershell


Voici un petit script permettant d’obtenir la taille des corbeilles de premier et second niveau en PowerShell.

A exécuter avec le compte admin.

# FIRST STAGE RECYCLE BIN
function Get-FirstLevelRecyclebinSize($SiteURL)
{  
    #Get the site collection
    $site = Get-SPSite $SiteURL
      
    # Create SPRecycleBinQuery object to Query Reycle bin
    $SPRecycleBinQuery = New-Object -TypeName Microsoft.SharePoint.SPRecycleBinQuery
    $SPRecycleBinQuery.ItemState = [Microsoft.SharePoint.SPRecycleBinItemState]::FirstStageRecycleBin
     
    # Set the query should return maximum number of objects
    $SPRecycleBinQuery.RowLimit = [int]::MaxValue-1
     
    # Get the sum of values of the 'Size' property of all Recycle Bin items and assign it to a variable
    $RecycleBinSize = $site.GetRecycleBinItems($SPRecycleBinQuery) | Measure-Object -Property Size -Sum | Select-Object -ExpandProperty Sum
     
    # Calculate the value in Mbs and returned the rounded value to the caller      
    return ([System.Math]::Round(($RecycleBinSize/1Mb),2))
}
# SECOND STAGE RECYLCE BIN
 function Get-SecondLevelRecyclebinSize($SiteURL)
{  
	$WebApp=get-spwebapplication $SiteURL
 
    foreach ($SPSite in $WebApp.Sites)
    {      
     # SPRecycleBinQuery to Query Reycle bin   
     $SPRecycleBinQuery=new-object Microsoft.SharePoint.SPRecycleBinQuery
     $SPRecycleBinQuery.OrderBy = [Microsoft.SharePoint.SPRecycleBinOrderBy]::DeletedDate;
     $SPRecycleBinQuery.IsAscending = $false;
     $SPRecycleBinQuery.RowLimit = 220000
     $SPRecycleBinQuery.ItemState = [Microsoft.SharePoint.SPRecycleBinItemState]::SecondStageRecycleBin
    
     $SPRecycleBinItemCollection  = $SPSite.GetRecycleBinItems($SPRecycleBinQuery)
      
       $Size=0
        
        for ($i=$SPRecycleBinItemCollection.Count-1; $i -GE 0;  $i--)
            {
                        $guid = $SPRecycleBinItemCollection[$i].ID;                
                    
                        $Size+=$SPRecycleBinItemCollection[$i].Size
                     
            }
          write-host "Recycle bin Size in" $SPSite.RootWeb.Title "-"  $SPSite.RootWeb.URL ":" ($size/1MB)  
       }
}

$Size1 = Get-RecycleFirstLevelbinSize "http://yoursiteurl"
write-host "*****First Stage Recycle bin Size (in MB):" $Size1 "*****"
write-host "*****Second Stage Recycle bin Sizes per sitecol*****"
$Size2 = Get-RecycleFirstLevelbinSize "http://yoursiteurl"

Taille d’un site SharePoint en powershell


Dans le cadre d’une migration j’ai eu à analyser le contenu d’une collection de site SharePoint afin d’avoir du détail sur la répartition du volume de données à travers les différents sites.

Un petit script powershell permettant de connaitre la taille d’une collection et de ses sous sites. Celui-ci prend en compte l’ensemble des fichiers et leurs versions. Cela reste approximatif car les listitems ne sont pas pris en compte et, s’ils sont nombreux, peuvent représenter un volume non  négligeable.

Pensez également à regarder la taille de vos corbeilles.
A exécuter avec le compte admin de la ferme bien évidemment 🙂


function GetWebSize ($Web)
{
[long]$subtotal = 0
foreach ($folder in $Web.Folders)
{
$subtotal += GetFolderSize -Folder $folder
}
$dispValue = "{0:N2}" -f (($subtotal/1024)/1024)
write-host "Site::" $Web.Title "::"  $Web.Url "::" $dispValue "MB"
return $subtotal
} 

function GetSubWebSizes ($Web)
{
[long]$subtotal = 0
foreach ($subweb in $Web.GetSubwebsForCurrentUser())
{
[long]$webtotal = 0
foreach ($folder in $subweb.Folders)
{
$webtotal += GetFolderSize -Folder $folder
}
$dispValue = "{0:N2}" -f (($webtotal/1024)/1024)
write-host "SubWeb::" $subweb.Title "::" $subweb.Url "::" $dispValue "MB"
$subtotal += $webtotal
$subtotal += GetSubWebSizes -Web $subweb
}
return $subtotal
} 


function GetFolderSize ($Folder)
{
[long]$folderSize = 0 
foreach ($file in $Folder.Files)
{
if ($file.Versions -ne $NULL -and $file.Versions.Count -gt 1) {
foreach ($version in $file.Versions)
{
$folderSize += $version.Size;
}
}
else {
$folderSize += $file.Length;
}
}
foreach ($fd in $Folder.SubFolders)
{
$folderSize += GetFolderSize -Folder $fd
}
return $folderSize
}

start-transcript -path E:\Scripts\PowerShell\transcript1.txt 

$web = Get-SPWeb http://yoururl
[long]$total = 0
$total += GetWebSize -Web $web
$total += GetSubWebSizes -Web $web
$totalInMb = ($total/1024)/1024
$totalInMb = "{0:N2}" -f $totalInMb
$totalInGb = (($total/1024)/1024)/1024
$totalInGb = "{0:N2}" -f $totalInGb
write-host "Total size of all sites below" $StartWeb "is" $total "Bytes,"
write-host "which is" $totalInMb "MB or" $totalInGb "GB"
$web.Dispose()

stop-transcript