我的脚本正在从 SQL Server 中的存储过程填充数据行。然后我在整个脚本中引用此数据行中的特定列。我想要做的是添加功能,如果行数 = 0,则采取行动 X,如果行数 = 1,则采取行动 Y,如果行数 > 1,则采取行动 Z。

-- PowerShell script snippet

# $MyResult is populated earlier;
# GetType() returns Name=DataRow, BaseType=System.Object

# this works
ForEach ($MyRow In $MyResult) {

    $MyFile = Get-Content $MyRow.FileName
    # do other cool stuff
}

# this is what I'm trying to do, but doesn't work
If ($MyResult.Count -eq 0) {
    # do something
}
ElseIf ($MyResult.Count -eq 1) {
    # do something else
}
Else {
    # do this instead
}

如果我使用数组,我可以让 $MyResult.Count 工作,但是我不能直接引用 $MyRow.FileName。

这可能非常简单,但我是 PowerShell 和面向对象语言的新手。我试过搜索这个站点、脚本专家的博客和谷歌,但我没有找到任何告诉我如何做到这一点的东西。

任何帮助深表感谢。

最佳答案

它与您如何填充 $MyResult 息息相关。如果您像这样查询数据库

$MyResult = @( << code that returns results from database >> )

也就是说,将从数据库返回数据集/数据表的代码包含在 @( ... ) 中,然后使用 $MyResult.count 可以轻松检查返回的行数。

如果您以这种方式填充 $MyResult,您的原始代码应按原样工作。

关于powershell - 在 PowerShell 中返回 DataRow 的行数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15395510/

10-15 17:31