【发布时间】: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