通过 SharePoint 2010 中的 PowerShell 向 Web 应用程序策略添加自定义声明

通过 SharePoint 2010 中的 PowerShell 向 Web 应用程序策略添加自定义声明

我发现此过程比预想得难得多,但在完成后发现比预期得容易得多,因此我认为应该针对它快速发布一篇文章。其中,迫切的任务是通过 PowerShell 向 Web 应用程序策略添加自定义声明。通过管理中心 UI,一切都变得易如反掌。进入 PowerShell 后,我最初采用创建 New-SPClaimsPrincipal 的方法添加到区域的策略中。以下是我尝试的各种方法(并且完全不是我查看的各种不同组合),仅供您参考:

#$tp = Get-SPTrustedIdentityTokenIssuer -Identity "ADFS with Roles"
#$cp = Get-SPClaimProvider -Identity "BasketballTeamProvider"

#$account = New-SPClaimsPrincipal -ClaimValue "DVK Jovenut" -ClaimType "Role" -TrustedIdentityTokenIssuer $tp
#$account = New-SPClaimsPrincipal -Identity "DVK Jovenut" -TrustedIdentityTokenIssuer $tp
#$account = New-SPClaimsPrincipal -Identity "c:0ǹ.c|basketballteamprovider|dvk jovenut" -IdentityType EncodedClaim
#$account = New-SPClaimsPrincipal -ClaimValue "DVK Jovenut" -ClaimType "https://schema.steve.local/teams" -ClaimProvider $cp.ClaimProvider
#$account = New-SPClaimsPrincipal -EncodedClaim "c:0ǹ.c|basketballteamprovider|dvk jovenut"

许多方法都成功添加了声明,但由于未实现策略,因此它显然不是正确的标识符(即,我授予“完全控制”权限,但具有该声明的用户无法登录)。这才是“比预想更难”的阶段。它的正常工作表明,我根本不需要 New-SPClaimsPrincipal 对象,而是需要下面可正确添加声明并使其正常运行的 PowerShell:

$WebAppName = "https://fc1"

$wa = get-SPWebApplication $WebAppName

$account = "c:0ǹ.c|basketballteamprovider|dvk jovenut"

$zp = $wa.ZonePolicies("Default")
$p = $zp.Add($account,"Claims Role")
$fc=$wa.PolicyRoles.GetSpecialRole("FullControl")
$p.PolicyRoleBindings.Add($fc)
$wa.Update()

因此,在当天结束时,只需将该自定义声明添加为简单字符串即可。请注意,为获得该 $account 值,我首先通过管理中心添加了策略,然后在完成时复制显示的声明值。希望将来您需要执行此操作时,本文可节省您的时间。

这是一篇本地化的博客文章。请访问 Adding A Custom Claim to a Web App Policy via PowerShell in SharePoint 2010 以查看原文