0
votes

Exporter vers la CSV à l'aide de PowerShell

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


2 commentaires

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.


3 Réponses :


0
votes

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.


1 commentaires

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 ""



0
votes

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}


1 commentaires

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.



0
votes

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


3 commentaires

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.