我有一个脚本在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,因此会擦除现有权限,因此你只能最后获得授权才能代表发送。
答案 0 :(得分:0)
请参阅this link以获取有关潜在问题的帮助。
非常基本的,你必须:
DistinguishedName
GrantSendOnBehalfTo
的当前值存储在变量GrantSendOnBehalfTo
替换为新列表之后你不需要将无限的字符串传递给EMS(我希望如此)。