我正在尝试从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
答案 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