Question
[SP10 - Powershell] Générer un fichier excel
- MicroVal
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 14
- Remerciements reçus 0
il y a 11 ans 11 mois #17287
par MicroVal
[SP10 - Powershell] Générer un fichier excel a été créé par MicroVal
Bonjour,
Je viens solliciter votre aide pour générer un fichier excel à partir d'un script PowerShell.
J'ai ce script (ci-dessous) qui permet de lister toute les collections de site SharePoint d'une Web Application, et les sites contenus dans ces collections de site.
Et, à partir de ce script, je souhaiterais obtenir diverses informations sur chaque site (titre du site, url, créateur, etc...) et les stocker dans un fichier excel.
Le script
[code:1]
function RecurseSiteAndDoSomething()
{
param([Microsoft.SharePoint.SPWeb]$SiteIdentity)
Write-Output \"Site: $($SiteIdentity.Url)\"
if($SiteIdentity.Webs.Count -gt 0)
{
foreach($subWeb in $SiteIdentity.Webs)
{
RecurseSiteAndDoSomething -SiteIdentity $subWeb
}
}
}
$webApp = \"URL de ma Web Application\"
$rootSite = New-Object Microsoft.SharePoint.SPSite($webApp)
$spWebApp = $rootSite.WebApplication
Write-Output \"Web Application: $webApp\"
foreach($siteColl in $spWebApp.Sites)
{
Write-Output \"Site Collection: $($siteColl.Url)\"
RecurseSiteAndDoSomething -SiteIdentity $($siteColl.RootWeb)
}
[/code:1]
J'ai ce script (ci-dessous) qui me permet de générer un fichier excel comme il me faut, mais quand je place la ligne $NewCSVObject += $site ... dans mon script précédent, cela ne fonctionne pas et j'ai des erreurs en retour.. cela vient peut être du fait de la fonction récursive ?
Script qui génère un fichier excel
[code:1]
$allSite = Get-SPWebApplication \"http://sp10dev7/\" | Get-SPSite
$NewCSVObject = @()
foreach ($web in $allSite)
{
foreach ($site in $web.allWebs)
{
$NewCSVObject += $site | Select-Object -Property Title,Url,author,RequestAccessEmail,Created,LastItemModifiedDate,SiteAdministrators
}
}
$NewCSVObject | export-csv d:\WebAnalytics\outputAnalytics.csv -noType
[/code:1]<br><br>Message édité par: MicroVal, à: 4/04/14 16:53
Je viens solliciter votre aide pour générer un fichier excel à partir d'un script PowerShell.
J'ai ce script (ci-dessous) qui permet de lister toute les collections de site SharePoint d'une Web Application, et les sites contenus dans ces collections de site.
Et, à partir de ce script, je souhaiterais obtenir diverses informations sur chaque site (titre du site, url, créateur, etc...) et les stocker dans un fichier excel.
Le script
[code:1]
function RecurseSiteAndDoSomething()
{
param([Microsoft.SharePoint.SPWeb]$SiteIdentity)
Write-Output \"Site: $($SiteIdentity.Url)\"
if($SiteIdentity.Webs.Count -gt 0)
{
foreach($subWeb in $SiteIdentity.Webs)
{
RecurseSiteAndDoSomething -SiteIdentity $subWeb
}
}
}
$webApp = \"URL de ma Web Application\"
$rootSite = New-Object Microsoft.SharePoint.SPSite($webApp)
$spWebApp = $rootSite.WebApplication
Write-Output \"Web Application: $webApp\"
foreach($siteColl in $spWebApp.Sites)
{
Write-Output \"Site Collection: $($siteColl.Url)\"
RecurseSiteAndDoSomething -SiteIdentity $($siteColl.RootWeb)
}
[/code:1]
J'ai ce script (ci-dessous) qui me permet de générer un fichier excel comme il me faut, mais quand je place la ligne $NewCSVObject += $site ... dans mon script précédent, cela ne fonctionne pas et j'ai des erreurs en retour.. cela vient peut être du fait de la fonction récursive ?
Script qui génère un fichier excel
[code:1]
$allSite = Get-SPWebApplication \"http://sp10dev7/\" | Get-SPSite
$NewCSVObject = @()
foreach ($web in $allSite)
{
foreach ($site in $web.allWebs)
{
$NewCSVObject += $site | Select-Object -Property Title,Url,author,RequestAccessEmail,Created,LastItemModifiedDate,SiteAdministrators
}
}
$NewCSVObject | export-csv d:\WebAnalytics\outputAnalytics.csv -noType
[/code:1]<br><br>Message édité par: MicroVal, à: 4/04/14 16:53
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 11 ans 11 mois #17289
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:[SharePoint 2010] Générer un fichier excel
Salut,
MicroVal écrit:
Si tes appels à Write-Output peuvent être remplacés par des appels à write-host voir write-debug, fait en sorte d’émettre l'objet sélectionné directement dans le pipeline :
[code:1]
$site | Select-Object -Property Title,Url,author,RequestAccessEmail,Created,LastItemModifiedDate,SiteAdministrators
[/code:1]
Ainsi ta fonction récursive n'utilise pas de tableau, et renverra une collection d'objet.
MicroVal écrit:
Sans les messages d'erreur on ne peut t'aider, car on ne peut pas les deviner.cela ne fonctionne pas et j'ai des erreurs en retour..
Si tes appels à Write-Output peuvent être remplacés par des appels à write-host voir write-debug, fait en sorte d’émettre l'objet sélectionné directement dans le pipeline :
[code:1]
$site | Select-Object -Property Title,Url,author,RequestAccessEmail,Created,LastItemModifiedDate,SiteAdministrators
[/code:1]
Ainsi ta fonction récursive n'utilise pas de tableau, et renverra une collection d'objet.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- MicroVal
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 14
- Remerciements reçus 0
il y a 11 ans 11 mois #17296
par MicroVal
Réponse de MicroVal sur le sujet Re:[SharePoint 2010] Générer un fichier excel
Tout d'abord, merci pour ta réponse.
Ensuite, le problème c'est que si je met
[code:1]
$SiteIdentity | Select-Object -Property Title,Url,author,RequestAccessEmail,Created,LastItemModifiedDate,SiteAdministrators | export-csv d:\WebAnalytics\outputAnalytics.csv -noType
[/code:1]
Je n'aurais qu'une seule entrée dans mon fichier excel.
Voici l'erreur généré pour le script ci-dessous (j'ai rajouter les lignes qui généraient des erreurs)
www.hostingpics.net/viewer.php?id=601745Untitled.png
Le script
[code:1]
function RecurseSiteAndDoSomething()
{
param([Microsoft.SharePoint.SPWeb]$SiteIdentity)
Write-Output \"Site: $($SiteIdentity.Url)\"
$NewCSVObject += $SiteIdentity | Select-Object -Property Title,Url,author,RequestAccessEmail,Created,LastItemModifiedDate,SiteAdministrators
if($SiteIdentity.Webs.Count -gt 0)
{
foreach($subWeb in $SiteIdentity.Webs)
{
RecurseSiteAndDoSomething -SiteIdentity $subWeb
}
}
}
$webApp = \"http://sp10dev7/\"
$rootSite = New-Object Microsoft.SharePoint.SPSite($webApp)
$spWebApp = $rootSite.WebApplication
Write-Output \"Web Application: $webApp\"
foreach($siteColl in $spWebApp.Sites)
{
Write-Output \"Site Collection: $($siteColl.Url)\"
RecurseSiteAndDoSomething -SiteIdentity $($siteColl.RootWeb)
}
export-csv d:\WebAnalytics\outputAnalytics.csv -noType
[/code:1]
Ensuite, le problème c'est que si je met
[code:1]
$SiteIdentity | Select-Object -Property Title,Url,author,RequestAccessEmail,Created,LastItemModifiedDate,SiteAdministrators | export-csv d:\WebAnalytics\outputAnalytics.csv -noType
[/code:1]
Je n'aurais qu'une seule entrée dans mon fichier excel.
Voici l'erreur généré pour le script ci-dessous (j'ai rajouter les lignes qui généraient des erreurs)
www.hostingpics.net/viewer.php?id=601745Untitled.png
Le script
[code:1]
function RecurseSiteAndDoSomething()
{
param([Microsoft.SharePoint.SPWeb]$SiteIdentity)
Write-Output \"Site: $($SiteIdentity.Url)\"
$NewCSVObject += $SiteIdentity | Select-Object -Property Title,Url,author,RequestAccessEmail,Created,LastItemModifiedDate,SiteAdministrators
if($SiteIdentity.Webs.Count -gt 0)
{
foreach($subWeb in $SiteIdentity.Webs)
{
RecurseSiteAndDoSomething -SiteIdentity $subWeb
}
}
}
$webApp = \"http://sp10dev7/\"
$rootSite = New-Object Microsoft.SharePoint.SPSite($webApp)
$spWebApp = $rootSite.WebApplication
Write-Output \"Web Application: $webApp\"
foreach($siteColl in $spWebApp.Sites)
{
Write-Output \"Site Collection: $($siteColl.Url)\"
RecurseSiteAndDoSomething -SiteIdentity $($siteColl.RootWeb)
}
export-csv d:\WebAnalytics\outputAnalytics.csv -noType
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 11 ans 11 mois #17298
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:[SharePoint 2010] Générer un fichier excel
MicroVal écrit:
[code:1]
Write-Host \"Site: $($SiteIdentity.Url)\"
Write-Output $SiteIdentity | Select-Object -Property Title,Url,author,RequestAccessEmail,Created,LastItemModifiedDate,SiteAdministrators
if($SiteIdentity.Webs.Count -gt 0)
...
[/code:1]
Et c'est un fichier csv que tu construis.
MicroVal écrit:
As-tu essayé ?Je n'aurais qu'une seule entrée dans mon fichier excel.
[code:1]
Write-Host \"Site: $($SiteIdentity.Url)\"
Write-Output $SiteIdentity | Select-Object -Property Title,Url,author,RequestAccessEmail,Created,LastItemModifiedDate,SiteAdministrators
if($SiteIdentity.Webs.Count -gt 0)
...
[/code:1]
Et c'est un fichier csv que tu construis.
MicroVal écrit:
Le tableau n'est pas créé, la syntaxe += cible donc un psobject. En utilisant un tableau tu risques d'avoir des pb de portéeVoici l'erreur généré pour le script ci-dessous
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- MicroVal
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 14
- Remerciements reçus 0
il y a 11 ans 11 mois #17301
par MicroVal
Réponse de MicroVal sur le sujet Re:[SharePoint 2010] Générer un fichier excel
Oui j'ai essayer, et effectivement je n'ai qu'une seule entrée dans mon fichier excel.
Je viens d'essayer le code tu m'as fournis, c'est niquel lorsque les informations s'affichent sur le terminal.
Le résultat sur le terminal :
www.hostingpics.net/viewer.php?id=350227Untitled.png
Mais comment dois-je m'y prendre si je veux mettre ces informations dans un fichier excel ?
Pour un fichier texte, il suffit juste de faire un Start-Transcript et Stop-Transcript c'est ça ?
Merci pour ton aide en tout cas
Je viens d'essayer le code tu m'as fournis, c'est niquel lorsque les informations s'affichent sur le terminal.
Le résultat sur le terminal :
www.hostingpics.net/viewer.php?id=350227Untitled.png
Mais comment dois-je m'y prendre si je veux mettre ces informations dans un fichier excel ?
Pour un fichier texte, il suffit juste de faire un Start-Transcript et Stop-Transcript c'est ça ?
Merci pour ton aide en tout cas
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 11 ans 11 mois #17302
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:[SharePoint 2010] Générer un fichier excel
MicroVal écrit:
[code:1]
$Resultat=RecurseSiteAndDoSomething
[/code:1]
Ensuite tu peux retraiter cette collection avec un autre cmdlet.
MicroVal écrit:
Construit d'abord ta collectionMais comment dois-je m'y prendre si je veux mettre ces informations dans un fichier excel ?
[code:1]
$Resultat=RecurseSiteAndDoSomething
[/code:1]
Ensuite tu peux retraiter cette collection avec un autre cmdlet.
MicroVal écrit:
Ces cmdlets sont dédiés aux logs, à priori ils sont inutile ici.<br><br>Message édité par: Laurent Dardenne, à: 4/04/14 17:29Pour un fichier texte, il suffit juste de faire un Start-Transcript et Stop-Transcript c'est ça ?
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.102 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [SP10 - Powershell] Générer un fichier excel