我正在使用SharePointPnP模块 我试图从位于一个列表下的每个文档中提取一些属性信息 我目前面临的一个问题是第29行的属性 $ Item.UniqueID 它抛出一个异常,因为UniqueID的返回值是$ null 但是,当我进入我的脚本并在Powershell控制台 $ Item 中运行以下命令时,我会获得密钥及其值的属性列表,包括UniqueID !!!
我的问题是,为什么我在每个项目中迭代时获得$ 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()
}
谢谢
答案 0 :(得分:0)
UniqueID 必须是区分大小写的 这是正确的脚本
$NewRow.UniqueID = $Item.UniqueId
由于