ADFS Powershell脚本,用于将其他SamlEndpoints添加到现有

ADFS Powershell脚本,用于将其他SamlEndpoints添加到现有,powershell,adfs,Powershell,Adfs,这个问题可能不需要实际的ADF知识,但我会在上下文中提供。命令“Set AdfsRelyingPartyTrust-Name X-SamlEndpoint Y”将用指定的内容覆盖所有SAML端点。我想做的是创建一个脚本,它接受现有的SAML端点并将它们设置为变量,这样我就可以将它们与新端点一起添加回去 如果只有一个现有端点,我可以使用以下方法将其放入变量中: $EP = New-AdfsSamlEndpoint -Binding "POST" -Protocol "SAMLAssertionCo

这个问题可能不需要实际的ADF知识,但我会在上下文中提供。命令“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属性将它们全部作为单个值返回,从而中断函数。使用“-limit 1”不起作用,因为expand属性的整个输出被认为是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”输出的每个索引值,并为每个值分配一个唯一的变量,这正是我遇到的问题。最好的方法是什么

我没有访问这些命令的权限,所以我不得不在这里猜测一下,但它看起来像是您的命令

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

不幸的是,“$EndPoints=@(Get ADFSRelyingPartyTrust-Name“pstest”| Select Object-ExpandProperty SamlEndpoints)”的输出被作为一个包含所有端点的响应输出$端点最终包含所有内容,看起来$EP什么都不包含。运行该命令会导致错误“对象引用未设置为对象的实例”。它可能看起来像一个长项目,但应该是一个数组。检查$Endpoints.count的值以确认。。。如果$EP算不上什么,那么您需要仔细检查您发布的代码,它是您问题的直接复制/粘贴。以哪种类型的单个值返回它们?你能给你的问题加个例子吗?