配置"代表"发送时的换行问题

时间:2015-12-10 11:11:56

标签: powershell exchange-server ems

我有一个脚本在Exchange命令行管理程序中设置代表权限发送,但是当您尝试使用它时,它会失败,因为第一部分的输出太长而截断超过2行

我们要做的第一件事是从人员列表中构建我们的数组,并将它们放入一些变量中传递:

function Add-Send ($mailbox, $target) {
    #"Granting send on behalf for $mailbox to $target"
    Set-Mailbox -Identity $mailbox -GrantSendOnBehalfTo @{ Add = $target }
}

我们传递一个长列表$target,maibox名称为$mailbox,如果我们输出文字,我们会得到:

Set-Mailbox -Identity "mr.jeff" -GrantSendOnBehalfTo @{ Add = "alan.alanson", "bob.bobson", "steve.stevenson" }

一切都很好但是如果输出中有超过N个字符,那么我们会得到一个换行符:

Set-Mailbox -Identity "mr.jeff" -GrantSendOnBehalfTo @{ Add = "alan.alanson", "bob.bobson", "steve.stevenson", ...
..., "cath.cathdotir" }

当您使用overlength输出运行此脚本时,命令将失败,因为应传递给CLI的输出将通过多行传递。 PowerShell将每一行视为一个单独的命令,它们显然会因语法错误而失败。

我们的字符串是从我们构建的数组中输出的:

function Send-Array ($mailbox) {
    $target = Get-Content ".\list\dpt1.txt"
    $target += Get-Content ".\list\$mailbox.txt"
    $target += Get-Content ".\list\dpt2.txt"
    $target = $target | Select-Object -Unique
    $separator = '", "'
    $target= $target -replace '^|$','"' -join ','
    Add-Send $mailbox $target
}

这为我们提供了一个包含如下字符串的数组:

"alan.alanson", "bob.bobson", "steve.stevenson"

从这里我不知道任何想法都会受到赞赏。

显而易见的解决方案是一次传递一个名称,但由于每次使用PowerShell设置代表权限发送时,它都会使用Exchange Server,因此会擦除现有权限,因此你只能最后获得授权才能代表发送。

1 个答案:

答案 0 :(得分:0)

请参阅this link以获取有关潜在问题的帮助。

非常基本的,你必须:

  • 获取您需要添加的用户的DistinguishedName
  • GrantSendOnBehalfTo的当前值存储在变量
  • 将新用户的专有名称附加到列表
  • GrantSendOnBehalfTo替换为新列表

之后你不需要将无限的字符串传递给EMS(我希望如此)。