PowerShell 如何处理具有自己属性的复杂类型(如 SPListItem)的哈希表属性值



考虑以下代码,其中$p是一个哈希表(@{})。为什么$p.Item.ID$p["Item"].ID等于$null,而($p.Item | select ID).ID则不等于?

[DBG]: PS C:Usersa> $p = @{}; $p.Item = $splist.GetItemById(308);
[DBG]: PS C:Usersa> $p.Item
...
ID                                 : 308
...
[DBG]: PS C:Usersa> $p.Item.ID -eq $null
True
[DBG]: PS C:Usersa> ($p.Item|select ID).ID -eq $null
False
[DBG]: PS C:Usersa> ($p.Item|select ID).ID
308

更新。 $p.Item是一个 SharePoint 列表项。对于其他更简单 (?) 类型(如 Microsoft.ActiveDirectory.Management.ADGroup ),$p.ADGroup.Name按预期工作,则不会出现此问题。

好 Powershell le 通常将项目作为列表。您可以访问列表中的所有项目,如下所示:

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"。($ 项目 ['Dad_x0200_Mom "])

Powershell 的优点是返回列表中工作流的状态。但他以数字返回。为此,有一个工作流状态表,如下所示:

http://blog.metrostarsystems.com/2011/05/03/sharepoint-2007-workflow-status-codes/

最新更新