请考虑以下代码,其中$p
是哈希表(@{}
)。为什么$p.Item.ID
和$p["Item"].ID
等于$null
,而($p.Item | select ID).ID
却没有?{/ p>
[DBG]: PS C:\Users\a> $p = @{}; $p.Item = $splist.GetItemById(308);
[DBG]: PS C:\Users\a> $p.Item
...
ID : 308
...
[DBG]: PS C:\Users\a> $p.Item.ID -eq $null
True
[DBG]: PS C:\Users\a> ($p.Item|select ID).ID -eq $null
False
[DBG]: PS C:\Users\a> ($p.Item|select ID).ID
308
更新。 $p.Item
是一个SharePoint列表项。对于其他更简单的(?)类型(例如Microsoft.ActiveDirectory.Management.ADGroup
,其中$p.ADGroup.Name
按预期工作的情况下不会发生此问题。
答案 0 :(得分:0)
Good Powershell通常将该项目列为清单。您可以访问列表中的所有项目,如下所示:
Add-PSsnapin Microsoft.SharePoint.PowerShell
$SPAssignment = Start-SPAssignment
#Read List
$webS = Get-SPWeb "http://intranet.domain.com.br"
$listS = $webS.Lists["List"]
foreach($item in $listS.Items | Where { $_["ID"] -le 10})
{
$item["Title"] = "Le id 10"
$item.Update()
$id = $item["ID"]
}
Stop-SPAssignment $SPAssignment
在我的代码中,我将标题更改为" Le id 10"并获得该项目的Id。请记住,您可以使用任何列。
另请注意,Sharepoint返回的对象的值附带默认SharePoint的名称,例如:
如果您有一个名为"爸爸妈妈"的列,则该对象或该项的值将返回" Dad_x0200_Mom"。 ($ item [' Dad_x0200_Mom"])
Powershell的优势在于返回列表中工作流的状态。但他回来了。为此,有一个工作流状态表,如下所示:
http://blog.metrostarsystems.com/2011/05/03/sharepoint-2007-workflow-status-codes/