我有以下有效的代码:
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 中运行。
关于sql-server - 如何像 IN 语句一样使用 PowershellWhere-Object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7179385/