我正在使用Invoke-SQLCmd来获取我想要处理的项目列表。在该列表中可以是指示需要绕过整个列表的项目。我试图找出如何使用-contains和-notcontains运算符,但我没有运气。这将是伪代码:
$dont_process = "dont process"
$list = Invoke-SQLCmd ........
if ($list -notcontains $dont_process) {processing goes here}
$ list是DataRows的System.array。运算符应该在一个数组上工作,但我猜一个DataRows数组不是它的工作类型。任何帮助将不胜感激。
答案 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
}