sql-server - 如何像 IN 语句一样使用 PowershellWhere-Object

标签 sql-server powershell smo

我有以下有效的代码:

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/

相关文章:

sql-server - 如何将 Azure Web 应用程序连接到 Azure SQL 数据库

sql-server - 无法在 Linux SQL Server docker 镜像中绑定(bind)挂载 Windows 文件夹

xml - 如何使用 powershell 显示其中包含 - 的 XML 标记?

powershell - 如何使用 CMD 从服务器本身查找计算机对象 OU

powershell - -in 运算符在 2.0 版本中不起作用?

c# - 如何在 SMO.Server ConnectionContext 中使用事务

c# - SQL Server 管理对象 (SMO) 的默认约束不一致

sql-server - 使用 SMO 还原数据库时 SQL Server 超时

c# - 无法识别发送到 SQL Server 存储过程的参数

sql - SQL Server 中两个计数的总和