我有一个脚本来代表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 的问题,它会擦除现有权限,因此您只会得到最后一个授予权限的人能够代发。