1

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

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

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

我们传递一个长列表作为$target邮箱名称$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" }

当您使用超长输出运行此脚本时,命令将失败,因为应该传递给 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 的问题,它会擦除​​现有权限,因此您只会得到最后一个授予权限的人能够代发。

4

1 回答 1

0

请参阅此链接以获取有关您的潜在问题的帮助。

基本上,您必须:

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

之后,您不需要向 EMS 传递无穷无尽的字符串(我希望如此)。

于 2015-12-10T13:09:45.387 回答