【发布时间】:2020-04-15 00:27:31
【问题描述】:
我正在尝试创建一个 PowerShell 脚本,以从我们的企业 Sharepoint 站点中提取大量报告文件的数据。 使用 getlistitems 我可以从我们的列表中提取相当一部分所需的数据,但它似乎只从每个列表的默认视图中返回项目。我想将它设置为从“所有项目”视图中提取,但我很难得到它。请参阅下面的代码。
$serverurl = "https:linkhiddenforprivacy/_vti_bin/Lists.asmx"
$xml = New-WebServiceProxy -Uri $serverurl -UseDefaultCredential
$dslist = $xml.GetListCollection()
$overalllist = $dslist.ChildNodes
foreach($listitem in $overalllist) {
try {
$xmlDoc = new-object System.Xml.XmlDocument
$query = $xmlDoc.CreateElement("Query")
$viewFields = $xmlDoc.CreateElement("ViewFields")
$queryOptions = $xmlDoc.CreateElement("QueryOptions")
$queryOptions.InnerXml = "<ViewAttributes Scope='RecursiveAll' IncludeMandatoryColumns='FALSE' />"
$rowLimit = "10000"
$view = $overalllist.views["All Items"]
$listitems = $xml.getlistitems($listitem.id, $view ,$null, $null, $rowLimit, $queryOptions, $null).data.row
foreach($child in $listitems) {
if($child.ows_DocIcon -eq "rdl"){
$vs = $xml.GetVersionCollection($listitem.ID, $child.ows_ID, "_UIVersionString")
$childlib = $child.ows_FileRef
$childname = $child.ows_LinkFileName
[string]$childowner = $child.ows_ReportOwner
$childcategory = $child.ows_ReportCategory
$childdescription = $child.ows_ReportDescription
$childstatus = $child.ows_ReportStatus
[PSCustomObject]@{
'Doctype' = $child.ows_DocIcon
'Library' = $childlib.substring($childlib.indexof('#') + 1, $childlib.lastindexof('/') - $childlib.indexof('#') - 1)
'Report' = $childname
'Owner' = $childOwner.Substring($childowner.indexof('#') + 1, $childowner.Length - $childowner.IndexOf('#') - 1)
'Category' = $childCategory
'Description' = $childDescription
'Status' = $childStatus
'Version' = $vs.Version[0]._UIVersionString
'Childlib' = $childlib
} | Export-Csv output.csv -Append -NoTypeInformation
}
我已经尝试了一些变体,但没有任何成功。我是 Powershell 的新手,因此我们将不胜感激。
【问题讨论】:
标签: powershell sharepoint view listitem