powershell - 更改CSV电子邮件地址

标签 powershell active-directory export-to-csv

我正在编写PowerShell代码以将电子邮件地址导出到csv文件并进行编辑。我写了以下内容:

# Script to get all DLs and email addresses in csv file
Get-ADGroup -Filter 'groupcategory -eq "distribution"' -Properties * |
    select Name, mail |
    Export-csv "C:\temp\Distribution-Group-Members.csv"

# Following will import the csv, make new column as proxy and save the file
# as update.csv 
Import-Csv "C:\temp\Distribution-Group-Members.csv" |
    Select-Object "Name", "mail", @{n = "proxy"; e = "mail"} |
    Export-Csv "c:\temp\Distribution-Group-Members-Updated.csv" -NoTypeInfo

# Following script can import the csv and set proxy addresses from proxy
# column 
Import-Csv "c:\temp\Distribution-Group-Members-Updated.csv" |
    Foreach {
        Get-ADGroup $_.Name | Set-ADGroup -Add @{
            proxyaddresses = ($_.proxy -split ";")
        }
   }

现在,我想在脚本中添加另外2个功能:
  • 更新现有邮件列的域,例如将邮件地址表格test@abc.com更新为test@xyz.com
  • 将SMTP:test@xyz.com; smtp:test@abc.com添加为代理邮件地址,以便xyz成为主邮件地址,而abc作为代理域

  • 因此,假设我的DL名称为“DL Test”,电子邮件为“test@abc.com” =>脚本应将DL的电子邮件地址更新为“test@xyz.com”,并添加“smtp:test@abc.com”作为代理邮件地址

    有人可以提出建议,我该如何实现?

    最佳答案

    您写过的部分:

    select-object "Name", "mail", @{n = "proxy"; e = "mail"}| 
    
    proxy部分称为计算属性。直接从输入对象中复制名称仅为NameMail的前两个,但是使用@{..}语法,您可以放置​​代码来计算新值。

    因此,您可以使用它来实现所需的更改:
    Import-Csv -Path 'C:\temp\Distribution-Group-Members.csv' | 
    
      Select-Object -Property Name, 
       @{Label='Mail';  Expression={$_.Mail -replace 'abc', 'xyz'}}, 
       @{Label='Proxy'; Expression={"SMTP:$($_.Mail -replace 'abc', 'xyz');smtp:$($_.Mail)"}}|
    
      Export-csv 'C:\temp\Distribution-Group-Members.csv' -NoTypeInformation
    

    关于powershell - 更改CSV电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51682152/

    相关文章:

    powershell - 有条件地排除 null 或空的 cmdlet 参数

    powershell - PowerShell Commandlet的移动项可以移动当前打开的文件吗?

    c# - 使用 PrincipalSearcher 进行分页

    powershell - 将所有 ADUsers 封装在 CSV 文件中

    Python CSV 模块 - 如何避免分隔符问题?

    java - 如何将字符串输入二维数组

    powershell - 使用 Powershell 从 CSV 输入创建自定义安装字符串

    search - PowerShell,在特定目录中搜​​索特定文件名

    coldfusion - 如何判断用户是否属于事件目录中的角色 - 使用 ColdFusion

    linux - 如何使用shell脚本将xlsx文件转换为csv文件?