【问题标题】:PowerShell SharePoint DataTablePowerShell SharePoint 数据表
【发布时间】:2014-04-03 06:10:23
【问题描述】:

我正在尝试更新 SharePoint 列表,因为它的大小并且为了使事情变得更快,我想使用 DataTable。

$webURL = "http://test/test"
$listName = "Test List"
$web = Get-SPWeb $webURL 
$list = $web.Lists[$listName]
$items = $list.items.GetDataTable() | select LinkTitle, Failure_x0020_Step

foreach($item in $items)
     {
        if(($item.LinkTitle -eq "PC111"))
           {
             $item.Failure_x0020_Step = "Failure Test"
             $item.Update()
           }
        else {}
     } 

运行脚本时出现此错误:

方法调用失败,因为 [System.Data.DataRow] 不包含名为“更新”的方法。 + CategoryInfo : InvalidOperation: (更新:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound

我确实可以在没有 DataTable 的情况下使用它(以下更改),但更喜欢 DataTable。

$items = $list.items

if(($item["Computer"] -eq "PC111"))
$item["Failure Step"] = "Failure Test"

【问题讨论】:

  • DataRows(和 DataTables)有 BeginEdit()EndEdit() 方法,我认为你需要使用它们来代替 Update()。不幸的是,我的共享点环境目前已损坏,因此我无法测试它是否会表现得更好。
  • @HunterEidson 我在 IF 语句中添加了:“$item.BeginEdit()”和“$item.EndEdit()”,其中 $item.Failure_x0020_Step = “Failure Test”。它不会出错,但列表中没有更新。还有其他方法可以使用这些方法吗?

标签: sharepoint powershell


【解决方案1】:

当您调用 Update() 时,它试图将更新应用到 DataTable,而不是 SharePoint 列表。他们是分开的。您需要从 SharePoint 中检索实际的列表项并对其进行更新。

我不知道为什么 DataTable 会让你的事情变得更快,但如果你想保留它:

$webURL = "http://test/test"
$listName = "Test List"
$web = Get-SPWeb $webURL 
$list = $web.Lists[$listName]
$items = $list.items.GetDataTable() | select LinkTitle, Failure_x0020_Step, ID

foreach($item in $items)
 {
    if(($item.LinkTitle -eq "PC111"))
       {
         $realItem = $list.GetItemById($item.ID)
         $realItem['Failure_x0020_Step'] = "Failure Test"
         $realItem.Update()
       }
    else {}
 } 

【讨论】:

  • 这成功了。之所以使用数据表,是因为列表中的每个项目都有大量数据,所以我想将我正在解析的内容限制为仅我需要的内容。
  • 您的代码实际上会遍历每个单独的列表项并转换为数据行并将这些行添加到数据表中。然后,您从数据表中进行选择。如果您真的想提高性能并限制所需的列,请使用带有 $list.GetItems() 方法的 CAML 查询。您不需要数据表。事实上,它对你不利。
猜你喜欢
  • 1970-01-01
  • 2014-02-07
  • 2023-03-27
  • 2011-12-31
  • 1970-01-01
  • 1970-01-01
  • 2012-01-09
  • 2019-04-03
  • 2021-07-08
相关资源
最近更新 更多