Задание представления для сценария PS для извлечения данных из списка Sharepoint Enterprise. - PullRequest
0 голосов
/ 15 апреля 2020

Я пытаюсь создать сценарий 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, поэтому любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 15 апреля 2020

Используйте CSOM в PowerShell, вы можете легко получить элементы, основанные на представлении.

Пример сценария:

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"  

$siteURL = "http://sp:12001"   
$ctx = New-Object Microsoft.SharePoint.Client.ClientContext($siteURL)  

try{  
    $lists = $ctx.web.Lists  
    $list = $lists.GetByTitle("MyList")  
    $view = $list.Views.GetByTitle("All Items")
    $ctx.load($view)        
    $ctx.executeQuery()
    $query=New-Object Microsoft.SharePoint.Client.CamlQuery
    $query.ViewXml = $view.ViewQuery;
    $listItems = $list.GetItems($query)  
    $ctx.load($listItems)        
    $ctx.executeQuery()  
    foreach($listItem in $listItems)  
    {  
        Write-Host "ID - " $listItem["ID"] "Title - " $listItem["Title"]  
    }  
}  
catch{  
    write-host "$($_.Exception.Message)" -foregroundcolor red  
}

Получить CSOM SDK из 2013 2016 или онлайн

Вы можете получить много демонстрации, если попытаетесь найти CSOM с помощью PowerShell в SharePoint.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...