私は動作する次のコードを持っています:
foreach ($db in $svr.Databases |
where-object {
$_.name -eq "testDB"
-or $_.name -eq "master"
-or $_.name -eq "model"
-or $_.name -eq "msdb" } )
{
write-output $db.name
}
これを行うためのよりクリーンな方法はありますか?
何かのようなもの:
foreach ($db in $svr.Databases |
where-object {$_.name -in "testDB, master, model, msdb" } )
{
write-output $db.name
}
-contains
演算子を使用します。お気に入り:
$dbs = "testDB", "master", "model", "msdb"
foreach ($db in ($svr.Databases | where-object {$dbs -contains $_.name } )) {
write-output $db.name
}
help about_Comparison_Operators
を使用して、この演算子および他の比較演算子の詳細を確認してください。
更新:
PowerShell v3には、-in
演算子が追加されています。元の質問の例はv3で機能します。
正規表現を使用できます:
$svr.Databases | where { $_.name -match 'testDB|master|model|msdb' } | foreach { $db.name }
これを行うことができます(少なくともPSv5では):
$srv.Databases | where Name -in "testDB","master","model","msdb" | write-output { $_.Name }