J'utilise un script PowerShell pour récupérer l'URL du site racine et tous les sous-sites du site SharePoint et afficher l'URL, le titre et le nombre total d'utilisateurs comme indiqué ci-dessous.
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue $SiteCollections = Get-SPWebApplication "http://sourcevideo.f.com" | Get-SPSite -Limit All foreach ($Site in $SiteCollections) { foreach ($Web in $Site.AllWebs) { Write-Host "Url:"$web.URL "| Title:"$web.Title "| Users:" $web.AllUsers.Count } Write-Host "" }
Comment le ferait-on Je peux exporter cela vers un CSV avec trois colonnes?
Code:
Url: http://sourcevideo.f.com | Title: The Source Video | Users: 3345 Url: http://sourcevideo.f.com/AGap | Title: A Gap | Users: 3345 Url: http://sourcevideo.f.com/AVideos | Title: Videos | Users: 417 Url: http://sourcevideo.f.com/BCt | Title: BC Japan | Users: 39
3 Réponses :
Pour développer la réponse de Lee, le code ressemblerait à ceci:
$WebInfo = @( â$web.urlâ â$web.titleâ "$web.allusers.count" ) $properties = @{'website url'=$WebInfo[0];'website title'=$WebInfo[1];'user count'=$WebInfo[2]} $WebsiteObject = New-Object -TypeName PSObject -Property $properties $WebsiteObject | Export-Csv -path "put path here" -NoTypeInformation
Je n'ai pas testé cela.
Veuillez éviter d'utiliser des guillemets intelligents “”
, même si PS peut les gérer, il n'est pas recommandé de les utiliser. Tenez-vous en aux guillemets doubles normaux ""
Je pense que ce dont vous avez besoin est de créer un nouvel objet
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue $SiteCollections = Get-SPWebApplication "http://sourcevideo.f.com" | Get-SPSite -Limit All | %{ $Site = $_ $Site | %{ New-Object PSObject -Property @{Url=$_.URL;Title=$_.Title;Users=$_.AllUsers.Count} } } | export-csv -Path C:\Test\Output.csv -NoTypeInformation
Voici un script terminé que j'ai écrit mais que je peux tester car je n'ai pas le plugin sharepoint
New-Object PSObject -Property @{Url=$web.URL;Title=$web.Title;Users=$web.AllUsers.Count}
Vous n'itérez pas la propriété .Allwebs
? Et attribuer le tube entier à un var et en même temps se terminer par Export-Csv
? Le var sera vide. Mieux vaut éviter les alias dans les réponses.
Attribuez le foreach externe à une variable et
à l'intérieur, construisez un [PSCustomObject]
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue $SiteCollections = Get-SPWebApplication "http://sourcevideo.f.com" | Get-SPSite -Limit All $Data = foreach ($Site in $SiteCollections) { foreach ($Web in $Site.AllWebs) { [PSCustomObject]@{ Url = $web.URL Title = $web.Title Users = $web.AllUsers.Count } } } $Data | Export-Csv .\yourName.csv -NoTypeInformation
Merci beaucoup LotPings! Fonctionne comme un charme, y a-t-il un objet pour afficher les noms d'affichage des utilisateurs? Donc, au lieu d'obtenir le AllUsers.Count, y a-t-il une option de nom?
En général, utilisez l'applet de commande Get-Member
pour afficher les méthodes et les propriétés disponibles d'un objet en y piping I.E. Get-ChildItem -File | Get-Member
, je n'ai pas de site Sharepoint ici, donc je ne peux pas le faire pour vous.
Non c'est tout à fait ok, je suis en train d'apprendre aussi! J'apprécie l'aide.
la manière habituelle est de créer un nouvel objet avec les propriétés souhaitées, puis d'utiliser l'applet de commande
Export-CSV
pour créer le CSV pour vous. cette applet de commande est conçue pour accepter une collection d'objets et la transformer en un fichier CSV approprié.Votre sortie est un csv avec
|
comme délimiteur. Cela fonctionnerait juste pour les remplacer par un autre délimiteur et pour l'enregistrer sous .csv.