虽然似乎很快搞清楚了!
所以基本上我修改脚本以帮助我们加快员工加入流程,生病了几个问题,但我的第一个尝试是在创建后以交换方式启用用户帐户邮件。 我已经在那里放了一些选项,所以我们的人可以选择创建帐户的交换数据库。我无法解决的是如何正确地做到这一点。 (不确定正确的语法)
最初我尝试使用变量并将输入传递给它,但这似乎不起作用,因为变量没有被拾取,所以我现在尝试以下方式< / p>
我知道我没有正确写下面的表达,因为它们有错误 - 所以想知道我应该如何正确地写下面的
switch ($result) {
1 { $database = "Enable-Mailbox -Identity domain\$un -Database Database1" }
2 { $database = "Enable-Mailbox -Identity domain\$un -Database Database2" }
3 { $database = "Enable-Mailbox -Identity domain\$un -Database Database3" }
}
非常感谢帮助:)
答案 0 :(得分:3)
我只想删除命令周围的引号,现在它们只是字符串:
switch ($result) {
1 { $database = Enable-Mailbox -Identity domain\$un -Database Database1 }
2 { $database = Enable-Mailbox -Identity domain\$un -Database Database2 }
3 { $database = Enable-Mailbox -Identity domain\$un -Database Database3 }
}
答案 1 :(得分:1)
我在这种情况下的建议是将数据与代码分开,因为这会使维护更加简单。它还使您可以重用数据。在这个例子中,我创建了一个哈希表, e.g:
Set-StrictMode -Version 2;
[Int32] $Local:intHashKey = 0;
[Int32] $Local:intSelection = 0;
[String] $Local:strDatabase = '';
[Hashtable] $Local:objExchangeDBLookup = @{ 1 = 'Database1';
2 = 'Database2';
3 = 'Database3'
};
# Display options and get selection.
do {
Foreach ( $intHashKey in ($objExchangeDBLookup.Keys | Sort-Object) ) {
Write-Host -Object ( '{0}. {1}' -f $intHashKey, $objExchangeDBLookup[$intHashKey] );
} #Foreach
$intSelection = Read-Host -Prompt "`nPlease select a database";
} until ( $objExchangeDBLookup.ContainsKey( $intSelection ) );
# Create Mailbox.
try {
$strDatabase = $objExchangeDBLookup[$intSelection];
Write-Host -Object ( 'Creating mailbox on DB "{0}"...' -f $strDatabase );
Enable-Mailbox -Identity domain\$un -Database $strDatabase;
} #try
catch [System.Exception] {
# Something went wrong.
} #catch
代码退出详细,故意使用静态数据类型进行强化。