Powershell出口SharePont分类法

时间:2018-07-26 19:55:02

标签: powershell sharepoint taxonomy

我正在尝试从SharePoint在线站点导出分类法,并且无法将TermSet和术语打印到csv文件中。我得到要打印的组标题,但是列表的TermSet和terms部分只有空白行。有人可以指出我正确的方向吗?

预先感谢您的帮助。

它确实连接到SharePoint网站。这是代码:

#Add references to SharePoint client assemblies and authenticate to Office 365 site - required for CSOM
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Taxonomy.dll"
$Password = Read-Host -Prompt "Please enter your password" -AsSecureString

#Bind to MMS
$Context = New-Object Microsoft.SharePoint.Client.ClientContext($Site)
$Creds = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($User,$Password)
$Context.Credentials = $Creds
$MMS = [Microsoft.SharePoint.Client.Taxonomy.TaxonomySession]::GetTaxonomySession($Context)
$Context.Load($MMS)
$Context.ExecuteQuery()

#Retrieve Term Stores
$TermStores = $MMS.TermStores
$Context.Load($TermStores)
$Context.ExecuteQuery()

#Bind to Term Store
$TermStore = $TermStores[0]
$Context.Load($TermStore)
$Context.ExecuteQuery()

#Retrieve Groups
$Groups = $TermStore.Groups
$Context.Load($Groups)
$Context.ExecuteQuery()

#Retrieve TermSets in each group
$csvFileName = "c:\CTSTermSet.csv"
$results = @()
$groupName = @()
$termSetName = @()
$termName = @()

Foreach ($Group in $Groups)
    {
    $Context.Load($Group)
    $Context.ExecuteQuery()
    Write-Host "Group Name:" $Group.Name -ForegroundColor Green
     $details = @{
                       GroupName       = $Group.Name
          }
    $results += New-Object PSObject -Property $details

    $TermSets = $Group.TermSets
    $Context.Load($TermSets)
    $Context.ExecuteQuery()
    Foreach ($TermSet in $TermSets)
        {
        $Context.Load($TermSets)
        $Context.ExecuteQuery()
        Write-Host "Term Set Name:"$TermSet.Name -ForegroundColor Yellow
        Write-Host "Terms:" -ForegroundColor DarkCyan
         $details = @{
                     TermSetName       = $TermSet.Name
            }
         $results += New-Object PSObject -Property $details
         $Terms = $TermSet.Terms
         $Context.Load($Terms)
         $Context.ExecuteQuery()
        Foreach ($Term in $Terms)
            {
             Write-Host "" $Term.Name -ForegroundColor White
             $details = @{
                     Term                    = $Term.Name
                }
             $results += New-Object PSObject -Property $details
           } #End Foreach ($Term in $Terms)
         }  #End Foreach ($TermSet in $TermSets)
    }    #End Foreach ($Grouup in$Group)
    $results | export-csv -NoTypeInformation -Path $csvFileName 

1 个答案:

答案 0 :(得分:0)

以下PowerShell供您参考。

#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Taxonomy.dll"

#Variables for Processing
$AdminURL = "https://crescent-admin.sharepoint.com/"
$ReportOutput="C:\Temp\TermStoreData.csv"

Try {
    #Get Credentials to connect
    $Cred = Get-Credential
    $Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)

    #Setup the context
    $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($AdminURL)
    $Ctx.Credentials = $Credentials

     #Array to Hold Result - PSObjects
    $ResultCollection = @()

    #Get the term store
    $TaxonomySession=[Microsoft.SharePoint.Client.Taxonomy.TaxonomySession]::GetTaxonomySession($Ctx)
    $TermStore =$TaxonomySession.GetDefaultSiteCollectionTermStore()
    $Ctx.Load($TaxonomySession)
    $Ctx.Load($TermStore)
    $Ctx.ExecuteQuery()

    #Get all term groups  
    $TermGroups = $TermStore.Groups
    $Ctx.Load($TermGroups)
    $Ctx.ExecuteQuery()

    #Iterate through each term group
    Foreach($Group in $TermGroups)
    {
        #Get all Term sets in the Term group
        $TermSets = $Group.TermSets
        $Ctx.Load($TermSets)
        $Ctx.ExecuteQuery()

        #Iterate through each termset
        Foreach($TermSet in $TermSets)
        {
            #Get all Terms from the term set
            $Terms = $TermSet.Terms
            $Ctx.Load($Terms)
            $Ctx.ExecuteQuery()

            #Iterate through each term
            Foreach($Term in $Terms)
            {
                $TermData = new-object PSObject
                $TermData | Add-member -membertype NoteProperty -name "Group" -Value $Group.Name
                $TermData | Add-member -membertype NoteProperty -name "TermSet" -Value $Termset.Name
                $TermData | Add-member -membertype NoteProperty -name "Term" -Value $Term.Name  
                $ResultCollection += $TermData
            }
        }
    }
    #Export Results to a CSV File
    $ResultCollection | Export-csv $ReportOutput -notypeinformation

    Write-host "Term Store Data Successfully Exported!" -ForegroundColor Green  
}
Catch {
    write-host -f Red "Error Exporting Termstore Data!" $_.Exception.Message
}

参考文献:

SharePoint Online: Export Term Store Data to CSV using PowerShell

SharePoint Online / Office 365 - Exporting All the Terms from Particular TermSet In .CSV File Using CSOM And Console Application