【发布时间】:2018-12-28 20:28:01
【问题描述】:
我正在尝试找到一种在用户名上创建过滤器的方法。基本上我们使用的交换系统有多个数据库,我们通过他们姓氏的第一个字母为其分配一个用户邮箱。
现在我有了通过 PowerShell 创建邮箱并进入正确数据库的命令,但我希望能够通过 CSV 文件执行此操作,但我不知道如何让 PowerShell 仅查看在用户姓氏的第一个字符,所以我可以对其进行一些if 语句过滤。
因此,如果姓氏是 Blogs,我希望 PowerShell 读出 B,然后将其放入变量中以便我可以使用它。
有什么想法吗?
将脚本修改为supplied to me by CB 后,我现在有了一个可以运行的 PowerShell 脚本。让我感到困惑的是,除非您将标头添加到变量中,否则 CSV 文件中的标头会引发错误。
我不断收到的错误是 “无法处理参数“身份”的参数转换。无法将“Deserialized.System.Management.Automation.PSCustomObject”类型的“@{user=Blogs}”值转换为类型"Microsoft.Exchange.Configuration.Tasks.UserIdParameter".
解决此问题的方法不是使用:foreach ($user in $list),您需要使用foreach ($list.user in list)
$list = import-csv c:\Operational.csv
$db = [string]::Empty
foreach ($list.user in $list)
{
switch -regex ($list.user) # I used a regex to find starting
# char of user and assign to $db
# variable the name of the
# mailboxdatabase
{
"^[a-d]" { $db = "Mailstore 501 (Operational A-D)" }
"^[e-j]" { $db = "Mailstore 502 (Operational E-J)" }
"^[k-p]" { $db = "Mailstore 503 (Operational K-P)" }
default { $db = "Mailstore 504 (Operational Q-Z)" }
}
#$username = $list.user Used for debugging
$identity = get-user $list.user
#$Database = $db Used for debugging
Enable-mailbox -Identity $identity -Alias $list.user -Database $db
#Echo "User : $username" Used for debugging
#Echo "Identity: $identity" Used for debugging
#Echo "Database : $db" Used for debugging
}
【问题讨论】:
标签: powershell exchange-server