【问题标题】:Line break issue when configuring "send on behalf of"配置“代表发送”时的换行问题
【发布时间】:2015-12-10 21:09:45
【问题描述】:

我有一个脚本可以在 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 都会遇到问题,它会擦除​​现有权限,因此您最终只会得到他最后一个被授予权限的人能够代表发送。

【问题讨论】:

  • 不,显而易见的解决方案是不将 Add-Send 的输出写入屏幕 - 要么直接将其分配给变量,要么直接在此处执行
  • 文本输出仅供我们测试,通常直接执行。我已经修改了原始帖子以更好地反映这一点。
  • 嗨VPope,你检查过这个吗? mandie.net/2013/01/23/… 它似乎解决了您在尝试添加新权限(并保留现有权限)时遇到的具体问题。
  • 通讯组的有趣使用我现在将研究它作为一个选项

标签: powershell exchange-server ems


【解决方案1】:

请参阅this link 以获取有关您的根本问题的帮助。

基本上,你必须:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-03
    • 1970-01-01
    • 1970-01-01
    • 2020-01-22
    • 1970-01-01
    • 2011-09-08
    • 1970-01-01
    相关资源
    最近更新 更多