1

我首先想说我只是在学习 powershell,这可能是一个非常简单的答案,但我已经做了一些研究,但找不到我正在寻找的确切内容。

我的目标:我正在使用 SQL cmdlet 尝试排除一些我们需要在其上运行脚本的数据库。下面是我获取数据库的代码

    $ExcludeDBs=Invoke-Sqlcmd -ServerInstance $EDDSServer -Database EDDS -InputFile $InactiveCaseSQLPath

这很好用,在此之后,当我尝试使用 foreach 循环并尝试比较属性时,我可以确定它位于哪个 SQL 集群上。下面是我的代码:

    $str="__SQL Cluster 13  (ALL NEW CASES HERE)"
    $ExcludeDbs | foreach{
    if($ExcludeDBs | Where-Object SQLclusterName  -eq $str){
    $SQLClusterName="ClusterNameSQL"}
    }#end foreach loop

我收到以下错误:

无法绑定参数“FilterScript”。无法将“System.String”类型的“SQLclusterName”值转换为“System.Management.Automation.ScriptBlock”类型。

我认为这与类型转换有关,但我不确定从这里去哪里。任何帮助将不胜感激。

4

1 回答 1

0

SQLClustername正在作为字符串处理 - 它是从您的查询返回的字段吗?

此外,你不应该需要where-object内部foreach

$str="__SQL Cluster 13  (ALL NEW CASES HERE)"
$ExcludeDbs | foreach{
if($_.SQLclusterName  -eq $str){
    $SQLClusterName="ClusterNameSQL"}
}#end foreach loop
于 2012-10-15T18:10:36.753 回答