迁移到 MS Graph 后的 Powershell 7.2 问题
Powershell 7.2 Issue after migration to MS Graph
自从模块 Az.Resources 从 Azure AD Graph API 迁移到 MS Graph API 我无法 运行 这些 cmdlet 的组合,也管道不工作
get-azadserviceprincipal -displayname <some name> | get-azadspcredential
这似乎是一个错误,因为 migration.The 命令 get-azadspcredential
需要参数 -objectid
并且它从 get-azadserviceprincipal
的输出中获取此参数。
由于它不再工作了,我如何将 obejctid
作为输入传递给 get-azadspcredential
到目前为止我尝试了什么:
#List service principal with name sp-acr-mit-pull
$sp=Get-AzADServicePrincipal -SearchString sp-acr-mit-pull
#Get Enddate for sp-acr-mit-pull and also create calculated property "Displayname"
$sp_enddate= @( foreach ($objectid in $sp.id)
{
Get-AzADspcredential -objectid $objectid -ErrorAction SilentlyContinue | Select-Object -Property @{Name = 'DisplayName'; Expression = { $sp.DisplayName } },@{Name = 'EndDate'; Expression = { $_.EndDateTime -as [datetime] } }
})
$sp_enddate
这似乎有效,输出为:
DisplayName EndDate
----------- -------
sp-acr-mit-pull 2/24/2022 3:59:26 PM
但我的问题是如果 Get-AzADServicePrincipal -SearchString <some name>
找到多个 entry.E.g
$sp=Get-AzADServicePrincipal -SearchString sp-acr-mit
$sp_enddate= @( foreach ($objectid in $sp.id)
{
Get-AzADspcredential -objectid $objectid -ErrorAction SilentlyContinue | Select-Object -Property @{Name = 'DisplayName'; Expression = { $sp.DisplayName } },@{Name = 'EndDate'; Expression = { $_.EndDateTime -as [datetime] } }
})
$sp_enddate
我得到这个输出
DisplayName EndDate
----------- -------
{sp-acr-mit-pull, sp-acr-mit-push} 2/24/2022 3:59:26 PM
{sp-acr-mit-pull, sp-acr-mit-push} 2/24/2022 3:59:25 PM
发生这种情况是因为 $sp.DisplayName
包含两个值:
$sp.DisplayName
sp-acr-mit-pull
sp-acr-mit-push
知道如何将 $sp.DisplayName
的值一一传递吗?预期输出是这样的:
DisplayName EndDate
----------- -------
sp-acr-mit-pull 2/24/2022 3:59:26 PM
sp-acr-mit-push 2/24/2022 3:59:25 PM
请查看下面更新的脚本。
$sp=Get-AzADServicePrincipal -SearchString sp-acr-mit
$sp_enddate= @(
foreach ($objectid in $sp){
Get-AzADspcredential -objectid $objectid.id -ErrorAction SilentlyContinue | Select-Object -Property @{Name = 'DisplayName'; Expression = { $objectID.DisplayName } },@{Name = 'EndDate'; Expression = { $_.EndDateTime -as [datetime] } }
}
)
$sp_enddate
在重新评估您的 Select 声明后,您似乎输出了 $sp
中 displayname
的所有实例,而不是它们的单个元素。因为你需要在 foreach 循环中从实例化的 $ObjectID
中引用它。
编辑:错过了您在 foreach 循环中从 $sp 中删除所有属性的事实,更新后它保留了它们并且对 Get-AzADspcredential
的调用引用了 $objectid.id
.
自从模块 Az.Resources 从 Azure AD Graph API 迁移到 MS Graph API 我无法 运行 这些 cmdlet 的组合,也管道不工作
get-azadserviceprincipal -displayname <some name> | get-azadspcredential
这似乎是一个错误,因为 migration.The 命令 get-azadspcredential
需要参数 -objectid
并且它从 get-azadserviceprincipal
的输出中获取此参数。
由于它不再工作了,我如何将 obejctid
作为输入传递给 get-azadspcredential
到目前为止我尝试了什么:
#List service principal with name sp-acr-mit-pull
$sp=Get-AzADServicePrincipal -SearchString sp-acr-mit-pull
#Get Enddate for sp-acr-mit-pull and also create calculated property "Displayname"
$sp_enddate= @( foreach ($objectid in $sp.id)
{
Get-AzADspcredential -objectid $objectid -ErrorAction SilentlyContinue | Select-Object -Property @{Name = 'DisplayName'; Expression = { $sp.DisplayName } },@{Name = 'EndDate'; Expression = { $_.EndDateTime -as [datetime] } }
})
$sp_enddate
这似乎有效,输出为:
DisplayName EndDate
----------- -------
sp-acr-mit-pull 2/24/2022 3:59:26 PM
但我的问题是如果 Get-AzADServicePrincipal -SearchString <some name>
找到多个 entry.E.g
$sp=Get-AzADServicePrincipal -SearchString sp-acr-mit
$sp_enddate= @( foreach ($objectid in $sp.id)
{
Get-AzADspcredential -objectid $objectid -ErrorAction SilentlyContinue | Select-Object -Property @{Name = 'DisplayName'; Expression = { $sp.DisplayName } },@{Name = 'EndDate'; Expression = { $_.EndDateTime -as [datetime] } }
})
$sp_enddate
我得到这个输出
DisplayName EndDate
----------- -------
{sp-acr-mit-pull, sp-acr-mit-push} 2/24/2022 3:59:26 PM
{sp-acr-mit-pull, sp-acr-mit-push} 2/24/2022 3:59:25 PM
发生这种情况是因为 $sp.DisplayName
包含两个值:
$sp.DisplayName
sp-acr-mit-pull
sp-acr-mit-push
知道如何将 $sp.DisplayName
的值一一传递吗?预期输出是这样的:
DisplayName EndDate
----------- -------
sp-acr-mit-pull 2/24/2022 3:59:26 PM
sp-acr-mit-push 2/24/2022 3:59:25 PM
请查看下面更新的脚本。
$sp=Get-AzADServicePrincipal -SearchString sp-acr-mit
$sp_enddate= @(
foreach ($objectid in $sp){
Get-AzADspcredential -objectid $objectid.id -ErrorAction SilentlyContinue | Select-Object -Property @{Name = 'DisplayName'; Expression = { $objectID.DisplayName } },@{Name = 'EndDate'; Expression = { $_.EndDateTime -as [datetime] } }
}
)
$sp_enddate
在重新评估您的 Select 声明后,您似乎输出了 $sp
中 displayname
的所有实例,而不是它们的单个元素。因为你需要在 foreach 循环中从实例化的 $ObjectID
中引用它。
编辑:错过了您在 foreach 循环中从 $sp 中删除所有属性的事实,更新后它保留了它们并且对 Get-AzADspcredential
的调用引用了 $objectid.id
.