Archives du mot-clé powershell

Powershell – Suppression totale des permissions d’un site SharePoint


Le script ci dessous permet de :

  • supprimer toutes les permissions d’un site SharePoint donné
  • supprimer les permissions de ses sous sites
  • donner le contrôle total à un groupe AD donné
function AddADGroupToSite ($web, $groupName, $permLevel)
{   
	$adgroup = $web.EnsureUser($groupName)
    $assignment = New-Object Microsoft.SharePoint.SPRoleAssignment($adgroup)
    $role = $web.RoleDefinitions[$permLevel]
    $assignment.RoleDefinitionBindings.Add($role);
    $web.RoleAssignments.Add($assignment)
}

function RemoveAllPermissionsForWebAndSubWebs ($web, $groupname, $permlevel)
{	
	$web.BreakRoleInheritance($false)
	$raCol = $web.RoleAssignments	
	Write-Host "Removing permissions for " $web.Title
	for ($i = $raCol.Count - 1; $i -ge 0; $i--)
	{                   
		$raCol.Remove($i)                
	}  
	Write-Host "Permissions removed" -foregroundcolor "green"	
	
	if ($web.Webs.Count -gt 0)
	{		
		foreach ($subweb in $web.Webs)
		{
			Write-Host "Subweb" $subweb.Title
			RemoveAllPermissionsForWebAndSubWebs -web $subweb
			$subweb.Dispose
		}		
	}	
	AddGroupToSite -web $web -groupName $groupname -permLevel $permlevel
	$web.Dispose
}


# SITE 1 
$spWeb = Get-SPWeb "http://votresitecol/votresite"
RemoveAllPermissionsForWebAndSubWebs -web $spWeb -groupName "votregroupeAD" -permLevel "Contrôle total"
     

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

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"