2017-09-21 14 views
0

私はSharePointPnPを使用しています。モジュール 1つのリストの下にある各ドキュメントからいくつかのプロパティ情報を抽出しようとしています 現在私が現在直面している問題の1つはプロパティです$ Item.UniqueID一意IDの戻り値はしかし$ヌル あるので、私が私のスクリプトにステップとPowerShellのコンソール$アイテムで次のコマンドを実行したときに、私はのリストを取得し、例外を投げ 29行にUniqueIDを含むキーとその値のプロパティSPOドキュメントユニークIDの戻り値がnull

私の質問は、各アイテムを繰り返し処理しているときに、なぜ私は$ null値を取得するのですか?ここで

は私のPowerShellスクリプトです:

try 
{ 
    Connect-PnPOnline -Url 'https://SomeCompany.sharepoint.com/FOA/BD/' -Credentials O365 

    $Items = Get-PnPListItem -List 'Budget' | Where-Object{$_.FileSystemObjectType -eq 'File'} 
    $ItemsFieldValues = $Items.FieldValues | Where-Object {$_.FileDirRef -like '*Models' -and $_.Title -like '*.xlsx' -and $_.Title -like '*-*'} 
    $dtItems = New-Object System.Data.DataTable 
    $dtItems.Columns.Add("ID", "Int64") | Out-Null 
    $dtItems.Columns.Add("OperatingUnit","String") | Out-Null 
    $dtItems.Columns.Add("HotelName","String") | Out-Null 
    $dtItems.Columns.Add("Title", "String") | Out-Null 
    $dtItems.Columns.Add("FileLeafRef", "String") | Out-Null 
    $dtItems.Columns.Add("FileDirRef", "String") | Out-Null 
    $dtItems.Columns.Add("UniqueID", "Guid") | Out-Null 
    $dtItems.Columns.Add("ModifiedBy", "String") | Out-Null 
    $dtItems.Columns.Add("ModifiedOn", "String") | Out-Null 
    $dtItems.PrimaryKey =$dtItems.Columns[0] 

    ForEach($Item in $ItemsFieldValues) 
    { 
     $TimeStamp = Get-Date -Format s 
     $NewRow = $dtItems.NewRow() 
     $NewRow.ID = $Item.ID 
     $NewRow.OperatingUnit = $Item.Title.Split('-')[0] 
     $NewRow.HotelName = ($Item.Title.Split('-')[1]).Split('.')[0] 
     $NewRow.Title = $Item.Title 
     $NewRow.FileLeafRef = $Item.FileLeafRef 
     $NewRow.FileDirRef = $Item.FileDirRef 
     $NewRow.UniqueID = $Item.UniqueID #$Item.UniqueID return value is $null 
     $NewRow.ModifiedBy = $Global:CurrentUserName 
     $NewRow.ModifiedOn = $TimeStamp 
     $dtItems.Rows.Add($NewRow) 
    } 

    if($dtItems.Rows.Count -gt 0) 
    { 
     $SQLConnection.Open() 
     $BulkCopy = New-Object("Data.SqlClient.SqlBulkCopy") $SQLConnection 
     $BulkCopy.DestinationTableName = "[Models].[HotelsModels]" 
     $BulkCopy.WriteToServer($dtItems) 
    } 
} 

catch 
{ 
    $ErrorLog = "Error On " + (Get-Date) + ";$($_.Exception.Message) - Line Number: $($_.InvocationInfo.ScriptLineNumber)" 
    Write-Error "$($_.Exception.Message) - Line Number: $($_.InvocationInfo.ScriptLineNumber)" 
    $NewRow = $Global:dtErrorLog.NewRow() 
    $NewRow.TimeStamp = [System.datetime]::Now 
    $NewRow.ErrorLog = $ErrorLog 
    $Global:dtErrorLog.Rows.Add($NewRow) 
    Save-ErrorLog 
} 
Finally 
{ 
    $SQLConnection.close() 
}   

はここ一意IDが敏感
場合でなければならないあなたに

答えて

0

ありがとう正しいスクリプトが

$NewRow.UniqueID = $Item.UniqueId 

おかげ

されます
関連する問題