当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何使用 PowerShell 将成员添加到通讯组

作者:精品下载站 日期:2024-12-14 05:51:24 浏览:13 分类:玩电脑

如何使用 PowerShell 将成员添加到通讯组


您可以将多个用户添加到 Microsoft 管理门户中的现有通讯组列表或启用邮件的安全组。但使用 PowerShell,速度要快得多,并且您可以使用 CSV 文件将成员添加到多个通讯组列表组。在本文中,您将了解如何使用 PowerShell 将成员添加到通讯组。

连接到 Exchange Online PowerShell

为了能够运行 PowerShell 命令,您必须连接到 Exchange Online PowerShell。以管理员身份打开 Windows PowerShell,运行以下 cmdlet,然后使用管理员凭据登录。

Connect-ExchangeOnline

Add-DistributionGroupMember 错误:您没有足够的权限

每个通讯组至少有一名经理(所有者)。这意味着只有通讯组经理才被允许执行这些管理任务。因此,当 Exchange Online 管理员尝试使用 Add-DistributionGroupMember cmdlet 更新通讯组的属性时,如果该管理员不是该通讯组的管理员,则会出现以下错误消息。

错误:您没有足够的权限。该操作只能由群组管理员执行。

请注意,即使具有全局管理员凭据的用户也无法添加成员或对通讯组进行更改。您不是通讯组经理这一事实可能会阻止您完成所需的管理任务。

管理通讯组需要使用的 PowerShell cmdlet 包含名为 -BypassSecurityGroupManagerCheck 的参数。因此,每当您尝试执行管理任务并出现权限错误时,您都可以将-BypassSecurityGroupManagerCheck参数添加到原始PowerShell命令中。

请参阅 PowerShell 命令语法示例。

Add-DistributionGroupMember "Distribution Group" -Member "Identity" -BypassSecurityGroupManagerCheck

运行 PowerShell 命令示例。

Add-DistributionGroupMember "[email protected]" -Member "[email protected]" -BypassSecurityGroupManagerCheck

在我们的示例中,任何人都可以将成员添加到通讯组(英国销售)

将用户添加到通讯组

您始终可以将用户作为新成员添加到现有通讯组中。我们将向您展示不同的情况:

  1. 将单个成员添加到现有通讯组
  2. 将批量用户添加到单个现有通讯组
  3. 将多个用户添加到单个现有通讯组
  4. 将批量用户添加到所有现有通讯组

为此,我们需要使用 Add-DistributionGroupMember PowerShell cmdlet。

将成员添加到通讯组

始终可以将特定成员添加到现有通讯组。

[玩转系统] 如何使用 PowerShell 将成员添加到通讯组

请参阅 PowerShell 命令语法。

Add-DistributionGroupMember "Distribution Group" -Member "Identity" -BypassSecurityGroupManagerCheck

运行以下 PowerShell 命令示例。

Add-DistributionGroupMember -Identity "[email protected]" -Member "[email protected]" -BypassSecurityGroupManagerCheck

将用户从 CSV 添加到特定通讯组

我们希望通过使用 PowerShell 从 CSV 文件导入所有用户的列表来向现有通讯组添加多个成员。

[玩转系统] 如何使用 PowerShell 将成员添加到通讯组

  1. 运行 PowerShell 命令导出组织中所有活动用户邮箱的列表
Get-Mailbox -ResultSize Unlimited | Select DisplayName, Alias, PrimarySmtpAddress | Export-Csv "C:\temp\Distribution Group Members.csv" -NoTypeInformation -Encoding UTF8
  1. 转到 C:\temp 文件夹
  2. 打开CSV文件查看所有用户邮箱的列表

[玩转系统] 如何使用 PowerShell 将成员添加到通讯组

  1. 每个用户都有多个身份,例如显示名称别名主 SMTP 地址
  2. 您可以编辑列表并删除不想添加为通讯组成员的用户(可选)

[玩转系统] 如何使用 PowerShell 将成员添加到通讯组

在我们的示例中,我们希望将此用户列表添加到名为 Sales France 的特定通讯组。

  1. 在下面脚本的第 3 行键入特定通讯组身份
  2. 运行以下 PowerShell 脚本
$Userslist = Import-Csv "C:\temp\Distribution Group Members.csv"
ForEach ($User in $Userslist) {
    Add-DistributionGroupMember -Identity "[email protected]" -Member $User.PrimarySmtpAddress -BypassSecurityGroupManagerCheck
}

注意:如果用户已经是该组的成员或者该用户不存在,您将在输出中收到一条消息。

Add-DistributionGroupMember: Ex93E602|Microsoft.Exchange.Management.Tasks.MemberAlreadyExistsException|The recipient
"[email protected]" is already a member of the group "Sales France".
Add-DistributionGroupMember: Ex94914C|Microsoft.Exchange.Configuration.Tasks.ManagementObjectNotFoundException|Couldn't
find object "[email protected]". Please make sure that it was spelled correctly or specify a different object.

将特定部门的所有用户添加到通讯组

您可以将组织中特定部门(例如销售部门)的所有用户添加到现有通讯组。

在我们的组织中,我们有多个销售部门,例如英国销售美国销售法国销售

我们希望获取所有销售部门的所有用户,并将他们作为成员添加到通讯组列表组 AllSalesDepartments 中。

  • 我们需要使用 PowerShell 字符串 Sales* 查找销售部门的所有用户。
  • 我们使用变量$SalesUsers来存储有关用户列表的信息。
  • 然后,我们运行 PowerShell 循环进程,该进程将使用变量 $SalesUsers 中存储的信息,并将 $SalesUsers 变量中存储的每个成员添加到通讯组 所有销售部门

运行以下 PowerShell 脚本。

$SalesUsers = Get-User | Where { $_.Department -like "Sales*" }
foreach ($User in $SalesUsers) {
    Add-DistributionGroupMember -Identity "[email protected]" -Member $User.Name -BypassSecurityGroupManagerCheck
}

您已成功使用 PowerShell 将成员添加到现有通讯组。

从 CSV 批量添加成员到多个通讯组

您可以从 CSV 文件将现有用户作为成员添加到多个通讯组列表和启用邮件的安全组。您需要创建一个包含两列的 CSV。包含通讯组列表的列和包含您希望添加为成员的现有用户的列。

创建一个包含两列的 CSV 文件:

  1. 打开记事本Microsoft Excel
  2. 在第一列顶部输入GroupName
  3. 列出现有通讯组主 SMTP 地址
  4. 在第二列顶部输入成员
  5. 列出成员的 UserPrincipalName

注意:列名GroupName不得包含任何空格,且通讯组必须存在。

请参阅下面的 CSV 文件示例。

[玩转系统] 如何使用 PowerShell 将成员添加到通讯组

  1. 如果 (C:) 驱动器中还没有文件夹 temp,请创建该文件夹
  2. 将文件命名为 DL Group Members.csv
  3. 保存类型为 CSV(逗号分隔 (*.csv)
  4. 点击保存
  5. 运行以下 PowerShell 脚本
# Specify the path to your CSV file
$csvPath = "C:\temp\DL Group Members.csv"

# Import the CSV file
$csvData = Import-Csv -Path $csvPath

# Loop through each row in the CSV file and update the distribution group
foreach ($row in $csvData) {
    $member = $row.Member
    $groupName = $row.GroupName

    # Check if the user specified in Member exists
    $userExists = @()
    $userExists += Get-User -Identity $member -ErrorAction SilentlyContinue
    $userExists += Get-Contact -Identity $member -ErrorAction SilentlyContinue

    # Check if the distribution group specified in GroupName exists
    $groupExists = Get-DistributionGroup -Identity $groupName -ErrorAction SilentlyContinue

    if ($userExists -and $groupExists) {
        # Both user and group exist, so proceed with updating the distribution group
        try {
            # Get the user's ID
            $userID = $userExists.Identity

            # Check if the user is already a member of the group
            $isMember = Get-DistributionGroupMember -Identity $groupName | Where-Object { $_.Identity -contains $userID }

            if (-not $isMember) {
                # User is not a member, so add them
                Add-DistributionGroupMember -Identity $groupName -Member $member -BypassSecurityGroupManagerCheck -ErrorAction Stop
                Write-Host "Added user $member as member to $groupName." -ForegroundColor Green
            }
            else {
                Write-Host "User $member is already a member of $groupName. No action needed." -ForegroundColor Cyan
            }
        }
        catch {
            Write-Host "Failed to update member for $groupName. Error: $($_.Exception.Message)" -ForegroundColor Red
        }
    }
    elseif (-not $groupExists) {
        # Group doesn't exist, display a message
        Write-Host "Distribution group $groupName specified in GroupName column doesn't exist. Skipping." -ForegroundColor Yellow
    }
    elseif (-not $userExists) {
        # User doesn't exist, display a message
        Write-Host "User $member specified in member column doesn't exist. Skipping." -ForegroundColor Yellow
    }
}

PowerShell输出结果显示:

  • 当您添加用户作为通讯组的成员时
  • 如果通讯组不存在
  • 如果用户已经是通讯组的成员
  • 用户在 Microsoft 365 中不存在
Added user [email protected] as member to [email protected].
User [email protected] is already a member of [email protected]. No action needed.
Distribution group [email protected] specified in GroupName column doesn't exist. Skipping.
User [email protected] specified in member column doesn't exist. Skipping.
Added user [email protected] as member to [email protected].
Added user [email protected] as member to [email protected].
User [email protected] specified in member column doesn't exist. Skipping.

将用户添加到多个通讯组

我们将向您展示如何以不同的方式将特定用户添加到多个通讯组。

[玩转系统] 如何使用 PowerShell 将成员添加到通讯组

将用户添加到多个通讯组

您可以将单个用户作为成员添加到多个通讯组列表和启用邮件的安全组。使用以下脚本并键入您想要分配给不同通讯组的成员

该脚本由两部分组成:

  • 第 1 行中指定通讯组主 SMTP 地址
  • 第 3 行中指定要添加的成员的UserPrincipalName

在我们的示例中,我们希望用户 [email protected] 成为两个通讯组的成员(Sales UKSales USA )。

运行以下 PowerShell 示例。

$DistributionGroupsList = "[email protected]", "[email protected]"
ForEach ($DistributionGroup in $DistributionGroupsList) {
    Add-DistributionGroupMember -Identity $DistributionGroup -Member "[email protected]" -BypassSecurityGroupManagerCheck
}

注意:如果用户已经是该组的成员或者该用户不存在,您将在输出中收到一条消息。

添加用户以批量处理所有通讯组

在这种情况下,我们希望将特定用户添加到所有现有通讯组列表和启用邮件的安全组中。

  • 我们将使用名为 $AllDistributionGroups 的变量来获取整个组织中的通讯组列表和启用邮件的安全组。
  • 然后,我们使用 ForEach PowerShell 语句对现有通讯组列表执行循环过程。
  • 在以下脚本的第 3 行中指定要添加的成员的 UserPrincipalName

运行以下 PowerShell 脚本示例。

$AllDistributionGroups = Get-Distributiongroup -ResultSize Unlimited
ForEach ($DistributionGroup in $AllDistributionGroups) {
    Add-DistributionGroupMember -Identity $DistributionGroup -Member "[email protected]" -BypassSecurityGroupManagerCheck
}

注意:如果用户已经是该组的成员或者该用户不存在,您将在输出中收到一条消息。

从 CSV 文件将用户添加到多个通讯组

从 CSV 文件将特定用户添加到多个通讯组列表和启用邮件的安全组的另一种方法。您需要创建一个 CSV,其中包含您希望将此用户添加为成员的通讯组列表。

创建一个包含两列的 CSV 文件:

  1. 打开记事本Microsoft Excel
  2. 在第一列顶部输入GroupName
  3. 列出现有通讯组的主 SMTP 地址
  4. 在第二列顶部输入类型
  5. 输入分发安全

注意:GroupName不得包含任何空格,并且通讯组必须存在。

[玩转系统] 如何使用 PowerShell 将成员添加到通讯组

  1. 如果 (C:) 驱动器中还没有文件夹 temp,请创建该文件夹
  2. 将文件命名为DL Group Type.csv
  3. 保存类型为 CSV(逗号分隔 (*.csv)
  4. 点击保存

[玩转系统] 如何使用 PowerShell 将成员添加到通讯组

  1. 使用 Import-Csv cmdlet 检查 CSV 文件

为了确保 PowerShell 可以读取该文件,请运行 Import-Csv cmdlet。

Import-Csv "C:\temp\DL Group Type.csv"
  1. 第 3 行中指定成员的UserPrincipalName
  2. 运行以下 PowerShell 脚本
$DistributionGroupsList = Import-Csv "C:\temp\DL Group Type.csv"
ForEach ($DistributionGroup in $DistributionGroupsList) {
    Add-DistributionGroupMember -Identity $DistributionGroup.GroupName -Member "[email protected]" -BypassSecurityGroupManagerCheck
}

注意:如果用户已经是该组的成员或者该用户不存在,您将在输出中收到一条消息。

将用户添加到过去 48 小时内创建的通讯组

您可以将特定用户添加到过去 48 小时内所有新创建的通讯组中。

在我们的示例中,我们将用户 [email protected] 添加到过去 48 小时内创建的通讯组中。

运行以下 PowerShell 示例。

$AllNewDistributionGroups = Get-DistributionGroup -ResultSize Unlimited | Where-Object { $_.WhenCreated -ge (Get-Date).AddHours(-48) }
ForEach ($DistributionGroup in $AllNewDistributionGroups) {
    Add-DistributionGroupMember -Identity $DistributionGroup.DistinguishedName -Member "[email protected]" -BypassSecurityGroupManagerCheck
}

注意:如果用户已经是该组的成员或者该用户不存在,您将在输出中收到一条消息。

如果不是成员,则将用户添加到通讯组

您想要验证特定用户是否是现有通讯组的成员。在我们的示例中,我们要检查 Brenda Smith 是否是通讯组 Sales UK 的成员。

  • 我们要检查的用户是 Brenda Smith
  • 通讯组名称为 Sales UK

如果特定用户(Brenda Smith)不是通讯组Sales UK的成员,那么我们希望将该用户添加为通讯组的成员。

运行以下 PowerShell 示例。

$User = Get-User -Identity "[email protected]"
$Group = Get-DistributionGroup -Identity "[email protected]"
if ($Group.PrimarySmtpAddress -notcontains $User.Name)
{ Add-DistributionGroupMember -Identity $Group.PrimarySmtpAddress -Member $User.Name -BypassSecurityGroupManagerCheck }

它会自动将用户添加为通讯组的成员。

了解更多:解锁 Microsoft 365 用户登录 »

结论

您学习了如何使用 PowerShell 添加通讯组成员。可以将单个用户或多个用户作为成员添加到现有通讯组。使用 Powershell,有多种方法可以完成任务,并且可以节省时间。

您喜欢这篇文章吗?您可能还喜欢为 Microsoft 365 用户重置 MFA。不要忘记关注我们并分享这篇文章。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯