使用PowerShell显示SQL查询的结果

使用PowerShell显示SQL查询的结果,powershell,Powershell,我已经提供了一个PS脚本,它调用一个简单的SQL查询,显示结果并播放语音。。。据推测这是为了进入一个BI小工具,它只显示PS脚本中的一个数字 查询中的正确计数未显示,并且由于某种原因卡在2上 $sql = "<simple COUNT query>" $items = invoke-sql -server "<server name>" -database "<db name>" -user "<uname>" -password "<pa

我已经提供了一个PS脚本,它调用一个简单的SQL查询,显示结果并播放语音。。。据推测这是为了进入一个BI小工具,它只显示PS脚本中的一个数字

查询中的正确计数未显示,并且由于某种原因卡在2上

$sql = "<simple COUNT query>"

$items = invoke-sql -server "<server name>" -database "<db name>" -user "<uname>" -password "<password>" -sql $sql -timeout 180

$day = (get-date).DayOfWeek.Value__

# $items[0] = 10
if ($day -ge 1 -and $day -le 5)
{

    $date = Get-Date

    if ($date.Hour -ge 8 -and $date.Hour -lt 17)
    {
        if ($items[0] -gt 0)
        {
            $voice = New-Object -Com sapi.spvoice
            $voice.Rate = 1
            $voice.volume = 100

            Do {
                Start-Sleep -s 1
                $Counter = Get-Date
            } 
            Until ($Counter.Second/15 -is [int])

            if ($items[0] -gt 1)
            {
                [void]$voice.Speak("New Ticket.")
            }
            else
            {
                [void]$voice.Speak("New Ticket.")
            }

        }
    }
}
Write-Output $items.Count
$sql=“”
$items=invoke sql-server”“-database”“-user”“-password”“-sql$sql-timeout 180
$day=(获取日期).DayOfWeek.Value__
#$items[0]=10
如果($day-ge 1-和$day-le 5)
{
$date=获取日期
如果($date.Hour-ge 8-和$date.Hour-lt 17)
{
如果($items[0]-gt 0)
{
$voice=新对象-Com sapi.spvoice
$voice.Rate=1
$voice.volume=100
做{
开始睡眠-s1
$Counter=获取日期
} 
直到($Counter.Second/15-is[int])
如果($items[0]-gt 1)
{
[void]$voice.Speak(“新票”)
}
其他的
{
[void]$voice.Speak(“新票”)
}
}
}
}
写入输出$items.Count

我使用的SQL组件没有问题,在运行时肯定可以正常工作,但我没有PowerShell脚本编写经验,因此请有人提供帮助?

$Items.count
将为您提供结果集中的记录数。从技术上讲,这些是对象,
$Items
是一个。如果要返回多行,则需要确定要显示的行

查询返回的
数据表的方法基本上是:

($Items[x]).Column
其中,
x
是要返回的0索引行,
Column
是要返回的列的名称。因此,如果需要第二行的
ItemCount
列,可以使用:

($Items[1]).ItemCount

如果您只是对查询的计数值感兴趣,可能应该使用$items.count而不是$items[0]。是否尝试提升并重新使用Com对象?可能运行脚本并在
$Errors
中查找任何隐藏的问题(在运行之前,请不要忘记执行
$Error.Clear()
),以清除记录)?我刚刚将$items[0]的所有实例更改为$items.Count,并从SQL查询中删除了该计数,以便显示所有结果。PS脚本现在正在计算我假设的每一行。它似乎确实起作用了。。。这是一个可以接受的解决方案吗?