ADFS Powershell脚本可将其他SamlEndpoints添加到现有的

时间:2018-07-18 19:51:40

标签: powershell adfs

这个问题可能不需要实际的ADFS知识,但我只是为了提供背景知识。命令“ Set-AdfsRelyingPartyTrust -Name X -SamlEndpoint Y”将使用您指定的内容覆盖所有SAML端点。我想做的是创建一个脚本,该脚本采用现有的SAML端点并将它们设置为变量,以便随后将它们与新端点一起重新添加。

如果只有一个现有端点,则可以使用它将其放入变量中,并且可以正常工作:

$EP = New-AdfsSamlEndpoint -Binding "POST" -Protocol "SAMLAssertionConsumer" -Uri "https://test.com" -Index 1
$EP1 = Get-ADFSRelyingPartyTrust -Name "X" | Select-Object -ExpandProperty SamlEndpoints 
Set-AdfsRelyingPartyTrust -TargetName "PsTest" -SamlEndpoint $EP,$EP1

这样做的问题是,如果存在多个端点,则expand-property将它们全部返回为单个值,从而破坏了功能。使用“ -limit 1”不起作用,因为扩展属性的整个输出被视为1。

我能做的就是使用此命令为每个索引值生成一个编号列表:

Get-AdfsRelyingPartyTrust -Name "X" | Select-Object -ExpandProperty SamlEndpoints | Select-Object -ExpandProperty Index

,然后为每个对应的索引值创建一个唯一变量

$EP1 = Get-ADFSRelyingPartyTrust -Name "X" | Select-Object -ExpandProperty SamlEndpoints | Where-Object {$_.Index -eq 2}

但是为了完全编写脚本而不是手动设置变量,我需要自动设置“ $ _。Index -eq”到从“ -ExpandProperty Index”输出的每个索引值,并分配一个唯一变量每一个,这就是我卡住的地方。解决此问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

我无权访问这些命令,因此我不得不在这里稍作猜测,但看起来像您的命令

Set-AdfsRelyingPartyTrust -TargetName "PsTest" -SamlEndpoint $EP,$EP1

接受-samlEndpoint参数的数组。

我将如何处理像这样的数组。

$EP = New-AdfsSamlEndpoint -Binding "POST" -Protocol "SAMLAssertionConsumer" -Uri "https://test.com" -Index 1
$EndPoints = @(Get-ADFSRelyingPartyTrust -Name "X" | Select-Object -ExpandProperty SamlEndpoints)

$Endpoints += $EP
Set-AdfsRelyingPartyTrust -TargetName "PsTest" -SamlEndpoint $EndPoints