Powershell -contains / -notcontains - 来自SQLServer的数组结果有问题

时间:2010-08-04 18:07:16

标签: sql-server powershell

我正在使用Invoke-SQLCmd来获取我想要处理的项目列表。在该列表中可以是指示需要绕过整个列表的项目。我试图找出如何使用-contains和-notcontains运算符,但我没有运气。这将是伪代码:

$dont_process = "dont process"
$list = Invoke-SQLCmd ........
if ($list -notcontains $dont_process) {processing goes here}

$ list是DataRows的System.array。运算符应该在一个数组上工作,但我猜一个DataRows数组不是它的工作类型。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

你的$dont_process变量是一个字符串,不是吗? -contains-notcontains运算符对列表中的每个项使用-eq运算符。 -eq运算符是.Net比较,因此DataRow类必须支持DataRow和字符串之间的比较。根据MSDN,does not

事实上,我并不完全确定你如何比较DataRow和字符串。它会是行中第一个项目的名称吗?

出于本答案的目的,让我们假装您要比较DataRow的.ToString()

你可能不得不求助于更加漫长的做事方式:

$list = Invoke-SQLCmd ...

$dontProcess = "dont process"
$shouldProcess = $true    
$foreach ($dataRow in $list) { 
    if ($dataRow.ToString() -eq $dontProcess) { 
        $shouldProcess=$false; 
    } 
}

if($shouldProcess) {
    # processing goes here
}