1

最初に言いたいのは、私はpowershellを学んでいるだけで、これは非常に簡単な答えかもしれませんが、いくつかの調査を行ったところ、探しているものを正確に見つけることができません.

私の目標: SQL コマンドレットを使用して、スクリプトを実行する必要があるいくつかのデータベースを除外しようとしています。以下は、データベースを取得するための私のコードです

    $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 に答える