none
[SharePoint 2010 - PowerShell] - Passage d'un ensemble de site web en paramètre d'une fonction RRS feed

  • Question

  • Bonjour,

    J'ai un soucis quand je veux mettre en paramètre d'une fonction un ensemble de sites Sharepoint (lors de l'appel de getAuthorAndOwners).
    En effet, dans ma fonction, au lieu de récupérer mes sites, j'ai une valeur vide à la place... (testé avec un write-host sur $web)

    $contentWebAppServices = (Get-SPFarm).services |
     ? {$_.typename -eq "Microsoft SharePoint Foundation Web Application"}
    # Parcours de l'ensemble des webapps
    foreach($webApp in $contentWebAppServices.WebApplications)
    {
      $sitesCol = Get-SPWebApplication -Identity $webApp | Get-SPSite -limit all
      # Parcours de l'ensemble des collections de sites  
      foreach($siteCol in $sitesCol)
      {
        $webs = Get-SPWeb -limit all -Site $siteCol
        getAuthorAndOwners($webs)
      }
    }
    function getAuthorAndOwners($webs)
    { 
      foreach($web in $webs) 
      {
        ...
      }
    }

    Ensuite j'ai testé de passer la collection de site en paramètre et de récupérer les sites directement dans ma fonction :

    getAuthorAndOwners($siteCol)
    function getAuthorAndOwners($entry, $siteCol)
    {
     $webs = Get-SPWeb -limit all -Site $siteCol
     foreach($web in $webs)
     {
        ...
     }
    }

    Mais j'ai l'erreur suivante :

    http://www.hostingpics.net/viewer.php?id=237499erreurPS.png

    Auriez vous une idée de solution à mon problème ?

    Merci d'avance,

    Valentin




    • Modifié MicroVal mardi 29 juillet 2014 09:48
    lundi 28 juillet 2014 16:16

Réponses

  • Et en réintégrant votre fonction et en supprimant les variables inutiles :

    Function getAuthorAndOwners($siteCollection)
    {
      foreach ($web in (Get-SPWeb -limit all -Site $siteCollection))
      {   
        Write-Host $web.Url
      }
    }
    
    $contentWebAppServices = (Get-SPFarm).services |
     ? {$_.typename -eq "Microsoft SharePoint Foundation Web Application"}
    
    # Parcours de l'ensemble des webapps
    foreach($webApp in $contentWebAppServices.WebApplications)
    {
      # Parcours de l'ensemble des collections de sites  
      foreach($siteCol in (Get-SPWebApplication -Identity $webApp | Get-SPSite -limit all))
      {
        getAuthorAndOwners($siteCol)
      }
    }

    Une variante :

    Function getAuthorAndOwners($siteCollection)
    {
      foreach ($web in $siteCollection.AllWebs)
      {   
        Write-Host $web.Url
      }
    }
    
    $contentWebAppServices = (Get-SPFarm).services |
     ? {$_.typename -eq "Microsoft SharePoint Foundation Web Application"}
    
    # Parcours de l'ensemble des webapps
    foreach($webApp in $contentWebAppServices.WebApplications)
    {
      # Parcours de l'ensemble des collections de sites  
      foreach($siteCol in $webApp.Sites)
      {
        getAuthorAndOwners($siteCol)
      }
    }


    My technical blog on SharePoint || My contributions on the TechNet Gallery


    mardi 29 juillet 2014 07:56
    Modérateur

Toutes les réponses

  • Bonjour,

    J'ai testé comme ceci, et çà fonctionne :

    $contentWebAppServices = (Get-SPFarm).services |
     ? {$_.typename -eq "Microsoft SharePoint Foundation Web Application"}
    
    # Parcours de l'ensemble des webapps
    foreach($webApp in $contentWebAppServices.WebApplications)
    {
      $sitesCol = Get-SPWebApplication -Identity $webApp | Get-SPSite -limit all
    
      # Parcours de l'ensemble des collections de sites  
      foreach($siteCol in $sitesCol)
      {
        $webs = Get-SPWeb -limit all -Site $siteCol
        foreach ($web in $webs)
        {
            Write-Host $web.Url
        }
      }
    }


    My technical blog on SharePoint || My contributions on the TechNet Gallery


    mardi 29 juillet 2014 07:45
    Modérateur
  • Et en réintégrant votre fonction et en supprimant les variables inutiles :

    Function getAuthorAndOwners($siteCollection)
    {
      foreach ($web in (Get-SPWeb -limit all -Site $siteCollection))
      {   
        Write-Host $web.Url
      }
    }
    
    $contentWebAppServices = (Get-SPFarm).services |
     ? {$_.typename -eq "Microsoft SharePoint Foundation Web Application"}
    
    # Parcours de l'ensemble des webapps
    foreach($webApp in $contentWebAppServices.WebApplications)
    {
      # Parcours de l'ensemble des collections de sites  
      foreach($siteCol in (Get-SPWebApplication -Identity $webApp | Get-SPSite -limit all))
      {
        getAuthorAndOwners($siteCol)
      }
    }

    Une variante :

    Function getAuthorAndOwners($siteCollection)
    {
      foreach ($web in $siteCollection.AllWebs)
      {   
        Write-Host $web.Url
      }
    }
    
    $contentWebAppServices = (Get-SPFarm).services |
     ? {$_.typename -eq "Microsoft SharePoint Foundation Web Application"}
    
    # Parcours de l'ensemble des webapps
    foreach($webApp in $contentWebAppServices.WebApplications)
    {
      # Parcours de l'ensemble des collections de sites  
      foreach($siteCol in $webApp.Sites)
      {
        getAuthorAndOwners($siteCol)
      }
    }


    My technical blog on SharePoint || My contributions on the TechNet Gallery


    mardi 29 juillet 2014 07:56
    Modérateur