【问题标题】:Add email addresses to AD security groups using Powershell使用 Powershell 将电子邮件地址添加到 AD 安全组
【发布时间】:2026-01-20 01:15:02
【问题描述】:

我正在尝试运行下面的 powershell 脚本,但我得到:

"Set-ADGroup : 找不到与参数名称“邮件”匹配的参数。

脚本导入一个两列 csv(左列是组,右列是电子邮件地址),然后循环遍历列表,设置列表中每个对象的邮件属性

Import-CSV -path 'D:\Scripts\AD-AddEmailtoSecGroups\Groups&Emails_Test.csv' | ForEach {get-adgroup -id $_.group | set-adgroup -mail $_.Mail}

【问题讨论】:

    标签: powershell active-directory


    【解决方案1】:

    试试这个。

    Import-CSV -path 'D:\Scripts\AD-AddEmailtoSecGroups\Groups&Emails_Test.csv' | ForEach-Object {Set-ADGroup -Identity $_.group -Replace @{mail="$_.email"}}
    

    编辑: 我想我认为电子邮件属性在您的 csv 中将被称为“电子邮件”。我只是看到您使用的是“邮件”。如此微小的变化:

    Import-CSV -path 'D:\Scripts\AD-AddEmailtoSecGroups\Groups&Emails_Test.csv' | ForEach-Object {Set-ADGroup -Identity $_.group -Replace @{mail="$($_.mail)"}}
    

    【讨论】:

    • 它为每个安全组填充了邮件字段,但这就是它在字段中的内容:@{Group=secgroupname; Mail=secgroupname@domain.com}.email
    • 我希望它把电子邮件地址放在邮件字段中。
    【解决方案2】:

    您需要使用-Replace 参数来访问邮件属性,因为它在Set-ADGroup 中没有自己的参数。将哈希传递给 -Replace 参数时,您还需要确保访问对象中的“邮件”属性,并适当地传递给命令。

    这应该可以解决问题:

    Import-CSV -path 'D:\Scripts\AD-AddEmailtoSecGroups\Groups&Emails_Test.csv' |
    ForEach-Object {Set-ADGroup -Identity $_.group -Replace @{mail="$($_.mail)"}}
    

    【讨论】:

      最近更新 更多