PowerShellを使用してSharePointドキュメントライブラリからCSVにデータを抽出する


0

PowerShellを使用してSharePointドキュメントライブラリのデータをCSVファイルに抽出しようとしています。CSvファイルで正しいデータを取得しています。ただし、1つの列(「説明」)にはさらに多くのテキストデータがあります。そのため、スクリプトを実行すると、データは別の行に送られます(1行に送られません)。参考のために、下にスクリプトを書き、下に私の出力ファイルを書きました。

Powershellスクリプト

$web = get-spweb "Site Url"
$caseLib = $web.lists | where {$_.title -eq "Document Library"}
$query=new-object Microsoft.SharePoint.SPQuery
$query.ViewFields = ""
$query.RowLimit=500000

do {
    $caseLibItems=$caseLib.GetItems($query)
    $query.ListItemCollectionPosition = $caseLibItems.ListItemCollectionPosition
    $listItemsTotal = $caseLibItems.Count
    $x = 0

    for($x=0;$x -lt $listItemsTotal; $x++) {
        $Description = $caseLibItems[$x]["DocumentSetDescription"]
        $str = ""

        if('$Description' -ne $null) {
            $str = $caseLibItems[$x]["LinkFilename"].ToString() + '}' + $Description
        } else {
            $str = $caseLibItems[$x]["LinkFilename"].ToString() 
        }

    Write-Output $str | Out-File "Path"
    import-csv Data.csv -delimiter "}" -Header "Number", "Description" | export-csv -NoTypeInformation -Path "C:\csvfile1.csv"
    }

} while ($query.ListItemCollectionPosition -ne $null)

Write-Host "Exiting"

参照用の出力ファイル

Name Description
ABCD-123 This file imported data of system.
XYZA-231 Data migrated to next session
file need to upload on another server.
System update required.
CDFC-231 New file need to create on system
XYZA-984 system creating problem.
Source code error. update new file
HGFC-453 Maintenance updated file.

以下のように出力したい

Name Description
ABCD-123 This file imported data of system.
XYZA-231 Data migrated to next session.file need to upload on another server. System update required.
CDFC-231 New file need to create on system
XYZA-984 system creating problem. Source code error. update new file.
HGFC-453 Maintenance updated file.

皆さんが私の要件を理解してくれることを願っています。説明列のデータは1行のみで必要です。

回答:


1

$ Descriptionを使用する前に、改行をスペースに置き換えてください。

$web = get-spweb $siteUrl
$caseLib = $web.lists | where {$_.title -eq $listTitle}
$query=new-object Microsoft.SharePoint.SPQuery 
$query.ViewFields = "<FieldRef Name='LinkFilename'/><FieldRef Name='DocumentSetDescription'/>"
$query.RowLimit=500000

Write-Output "Header}Description" | Out-File "temp.csv" 

do
{
    $caseLibItems=$caseLib.GetItems($query)
    $query.ListItemCollectionPosition=$caseLibItems.ListItemCollectionPosition
    $listItemsTotal = $caseLibItems.Count
    $x = 0
    for($x=0;$x -lt $listItemsTotal; $x++)
    {
        $Description = $caseLibItems[$x]["DocumentSetDescription"]
        $str = ""
        if('$Description' -ne $null)
        {
            ### Insert the line below to remove line breaks ###############
            $Description = $Description -replace "`n"," " -replace "`r"," "
            ###############################################################
            $str = $caseLibItems[$x]["LinkFilename"].ToString() + '}' + $Description
        }
        else
        {
            $str = $caseLibItems[$x]["LinkFilename"].ToString()
        }
        Write-Output $str | Out-File -Append "temp.csv" 
    }
} while ($query.ListItemCollectionPosition -ne $null)

import-csv temp.csv -delimiter "}" | export-csv -NoTypeInformation  -Path "result.csv"

Write-Host "Exiting"

Pieroが共有する回答。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.