如何更改大量共享邮箱的显示名称?强调问题

如何更改大量共享邮箱的显示名称?强调问题

我必须将大量共享邮箱重命名为新格式,脚本已准备就绪并可以运行,但当脚本运行时,包含强调没有得到正确更新,在应该强调的地方出现了一个问号。

- - - - - - - - - - - - - - - - - - - - -输入文件:

name,NewName
BMS-cipatubarao,"CIPA Tubarão"
BEL-liberacaeodelimbo-amd,"Liberação AMD"

- - - - - - - - - - - - - - - - - - - - -脚本:

$sharedChange = Import-Csv .\"SHAREDchange.csv"
$sharedChange | foreach{
  $sharedName = $_.name
  $sharedNewName = $_.newname
  try {
  # Change the DisplayName on Services Domain
      set-user $sharedname -displayname $sharedNewName
      "$(get-date -f MM/dd/yyyy-HH:mm:ss), $sharednewname, modified on, $sharedname`n" | out-file '.\SharedSuccess.txt' -append
  }   catch {
      "$(get-date -f MM/dd/yyyy-HH:mm:ss), $sharednewname, NOT modified on, $sharedname`n" | out-file '.\SharedFailed.txt' -append
  }
}

- - - - - - - - - - - - - - - - - - - - -输出文件:

09/04/2017-17:47:12, CIPA Tubar�o, modified on, cipatubarao
09/04/2017-17:47:14, Libera��o AMD, modified on, liberacaeo-amd

我该怎么办?我已经尝试直接在 shell 上使用该命令, set-mailbox liberacaeo-amd -displayname "Liberação AMD" 而且可以正常工作,但由于我有一批共享邮箱来执行此更改,所以这完全不可能。

答案1

首先,您确实应该停止使用这些特殊字符,因为您已经看到,在编写脚本时这会成为一个问题……因此,当您开始实施新的名称模式时,请确保这将消除这些丑陋的特殊字符。

1.) 确保您的输入格式具有正确的编码(例如带有 BOM 的 UTF-8)

2.)您可以尝试转换它们:

   function ConvertTo-Encoding ([string]$From, [string]$To){
        Begin{
            $encFrom = [System.Text.Encoding]::GetEncoding($from)
            $encTo = [System.Text.Encoding]::GetEncoding($to)
        }
        Process{
            $bytes = $encTo.GetBytes($_)
            $bytes = [System.Text.Encoding]::Convert($encFrom, $encTo, $bytes)
            $encTo.GetString($bytes)
        }
    }

    [System.Text.Encoding]::Default.Codepage

    $Title = "Liberação Tubarão" | ConvertTo-Encoding "UTF-8" "windows-1251"
    Write-Host $Title
    $Title = $Title.Replace(("Liberação" | ConvertTo-Encoding "UTF-8" "windows-1251"), "")
    Write-Host $Title

3.) 您可以尝试首先通过以下方式将编码设置为 UTF8(更多信息这里):

[Console]::OutputEncoding = [System.Text.Encoding]::UTF8

Powershell 3.0 及更高版本:

$PSDefaultParameterValues['*:Encoding'] = 'utf8'

答案2

感谢支持。我做了一些测试,发现导入过程中名称出现错误,因此,我将输入文件保存为 .csv UNICODE UTF-8。再次进行测试,现在一切都正常。我不知道这件事,但现在已经修复了。

谢谢!

更多信息:http://blogs.catapultsystems.com/thernandez/archive/2015/09/20/how-to-export-and-import-foreign-characters-with-powershell/

答案3

我用它一次更改了几个共享邮箱。

创建一个如下所示的“c:\users.csv”,其中左栏中的“ident”下包含您想要更改的共享邮箱的电子邮件地址,右栏中的“displayname”下包含您想要的新显示名称。

ident,displayname
[email protected],New Display Name1
[email protected],New Display Name2
[email protected],New Display Name3

然后,如果您安装了 Exchange 模块并且已登录会话,则可以将其复制并粘贴到 PowerShell 中。

Import-Csv C:\users.csv|ForEach{Set-Mailbox -Identity $_.ident -DisplayName $_.displayname}

相关内容