由于第8层问题,我需要在Exchange中设置邮箱委派权限。我已经编写了我的第一个功能PowerShell脚本来为我做这个,除了可怕的
之外,一切都很好-GrantSendOnBehalfTo
我很困惑,直到我意识到只有我的数组中的姓氏获得了权限,所以我发现当你运行命令时它会清除所有现有的条目。
假设Bob代表Joe的邮箱发送,Ben也需要它。我跑
Set-Mailbox -Identity Joe -GrantSendOnBehalfTo Ben
Ben会得到它而Bob会失去它。
所以我挖了一下,发现你可以在一个命令中提供多个用户,这样就可以了,格式如下:
Set-Mailbox -Identity Joe -GrantSendOnBehalfTo @{Add="Bob", "Ben"}
所以我想传递一些列表构建的数组:
function test-Array($mailbox) {
$target= Get-Content .\list\$list.txt
Set-Mailbox -Identity $mailbox -GrantSendOnBehalfTo @{Add=$target}
}
这显然会失败,因为$ target的输出是:
Bob Ben
所以我的问题是:我如何追加字符串以便它们如下?
"Bob", "Ben",
我试过了
$separator = "", ""
[string]::Join($separator,$target)
但由于PowerShell是邪恶的,它不会将"
视为我的分隔符的一部分。
很抱歉看起来很傻。我环顾四周,不能为我的生活搞清楚。
分辨率:
$separator = '", "'
$tgt= [string]::Join($separator,$target)
$tgt = $tgt + '"'
$tgt = $tgt.Insert(0,'"')
OR
$separator = '", "'
$target= $target -replace '^|$','"' -join ','
答案 0 :(得分:3)
不幸的是,只设置分隔符只会在元素之间设置引号。它会错过第一个和最后一个引用。
$target = 'Bob','Ben'
$target -replace '^|$','"' -join ','
"Bob","Ben"
答案 1 :(得分:2)
function test-Array($mailbox){
$target= Get-Content .\list\$list.txt
Foreach($User in $Target){
Set-Mailbox -Identity $mailbox -GrantSendOnBehalfTo @{Add=$User}
}
}