PowerShell SharePoint DataTable

时间:2014-04-02 14:11:48

标签: sharepoint powershell

我正在尝试更新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]不包含名为“Update”的方法。     + CategoryInfo:InvalidOperation:(Update:String)[],RuntimeException     + FullyQualifiedErrorId:MethodNotFound

我确实没有DataTable(下面的更改),但更喜欢DataTable。

$items = $list.items

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

1 个答案:

答案 0 :(得分:2)

当您调用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 {}
 }