在组成员注册 MFA 后,我需要从一个 Azure AD 组中删除该成员并将其添加到另一个组。

当我运行脚本时,我没有收到任何错误,但它没有按预期删除/添加成员。 我可以验证它通过了第 2 步,但之后什么都不做。 我相信在第 3 步开始时我需要一个Select-Object

如果成员已注册 MFA,脚本将从 A 组中删除成员并将其移至 B 组。

  1. Get-AzureADGroupMember -ObjectId "7d23abf4-4e30-4092-b4e6-a5297addad75" |

  2. Where-Object {$_.StrongAuthenticationMethods -ne $null} |

  3. Add-AzureADGroupMember -ObjectId "24db4ad9-8fe0-45f6-a71a-79b76395105a" |

  4. Remove-AzureADGroupMember -ObjectId "7d23abf4-4e30-4092-b4e6-a5297addad75"

     Step 1. Get member of Group A Step 2. Where member has enrolled in MFA Step 3. Add member to Group B Step 4. Remove member from Group A

脚本应审核一个 Azure 广告组 (A) 以查看哪些成员已注册 MFA,将已注册的成员从组中删除,并将其移至另一个组 (B)。

#1楼 票数:0 已采纳

您的脚本有两个问题。

1. | 意思是powershell pipline,不是这样的用法,更多细节见这个链接

AzureAD powershell 中的User实体没有StrongAuthenticationMethods属性,它存在于MSOnline powershell ,因此您需要改用它。

这是一个示例,请确保您已使用Install-Module MSOnline安装了MSOnline powershell 模块。

注意:您需要确保用户不在 B 组中,否则您将收到错误The group member you are trying to add is already a member of this group

Connect-MsolService

$groupA = "<objectid of group A>"
$groupB = "<objectid of group B>"

#get the users(whose GroupMemberType is 0) in the group A
$userids = (Get-MsolGroupMember -GroupObjectId $groupA | Where-Object {$_.GroupMemberType -eq '0'}).ObjectId
#add the MFA-enrolled user to A and remove from B
foreach($item in $userids){
    $user = Get-MsolUser -ObjectId $item
    if($user.StrongAuthenticationMethods.Count -ne "0"){
        Add-MsolGroupMember -GroupObjectId $groupB -GroupMemberType User -GroupMemberObjectId $item
        Remove-MsolGroupMember -GroupObjectId $groupA -GroupMemberType User -GroupMemberObjectId $item

    }else{
        Write-Host The user $user.DisplayName is not MFA-enrolled.
    }
}

  ask by Alan Inman translate from so

未解决问题?本站智能推荐:

1回复

Powershell代码将Azure虚拟机,名称,资源组,VNET,子网和NSG输出到Excel?

有人可以建议我如何使用Powershell将Azure VMS详细信息输出到excel文件或文本文件吗? 我需要VM,VNET,子网和NSG的名称吗?
3回复

azure 管道 - 基于触发分支设置变量

我正在尝试使用 powershell 根据触发的分支设置 BuildConfiguration 有谁知道如何做到这一点?
1回复

Azure对等输出

我当前正在使用一个脚本,该脚本为我提供Azure订阅中每个对等的输出,同时列出了VNet和一些选项,如AllowVirtualNetworkAccess,AllowForwardedTraffic,UseRemoteGateways和AllowGatewayTransit。 输出应如下所示: 这
3回复

在此对象天蓝色发布管道上找不到属性“值”

我正在使用下面的代码来更新 Powershell 中的发布定义, PowerShell_1: PowerShell_2 但问题是,我在发布管道中的两个任务中使用了上面的代码,上面的代码在任务 1 中传递,但相同的代码在任务 2 上抛出以下错误, 释放变量: 请帮助我摆脱这种情
1回复

如何仅获取 Azure 密钥保管库的部分 Powershell 输出?

我有这个 PS 脚本,我正在尝试获取 Azure 订阅中所有 Key Vault 的用户访问信息。 所以我现在得到的是所有的 Key Vault 信息; 名称、位置、ID、不同的设置、网络规则,然后是每个具有访问权限的用户的访问策略。 有没有办法去除此输出以仅获取保管库名称和访问策略?
2回复

如何使用azure powershell命令获取特定azure资源组中存在的azure逻辑应用程序的列表

假设我在Azure资源组X中创建了Logic App 1,Logic App 2,Logic App 3等。然后使用Azure Powershell命令,我要获取此逻辑应用程序列表,该列表位于“ X” Azure资源组下
1回复

验证 Azure 资源组是否存在

我正在尝试写入 powershell 脚本以验证资源组是否存在。 状况- 检查资源组 (myrg) 是否已存在于 azure 订阅中。 如果“条件 1”为 FALSE,则创建资源组 (myrg) 否则在资源组名称后附加 2 位数字。 例如(myrg01) 检查 (myrg01) 资源
2回复

使用 powershell 覆盖 azure 资源组上的标签名称

以下是蔚蓝资源 PS C:\Windows\System32> Get-AzResource -ResourceGroupName paniRG Name : paniavset123 ResourceGroupName : paniRG ResourceType