PowerShell 中 sqlcmd 的计划任务空值 return

Scheduled Task null value return from sqlcmd in PowerShell

我有一个 PowerShell 脚本,它正在 运行从 Windows 服务器 2008R2 服务器执行 SQL 查询;当使用域管理员/服务帐户登录到服务器时,脚本 运行s 并从基本 PS 和 ISE 完成。如果我从任务计划程序使用相同的管理员/服务帐户计划相同的脚本,则查询不会 return 任何值。计划任务 运行ning 为“运行,具有最高权限。”PowerShell 是 V4。

$Result = Invoke-Sqlcmd -ServerInstance Server -Database Database -Query $Query

其中 运行 手动 $Result 总是 returns 一个值,但来自计划任务 $Result 始终为空。在这两种情况下,脚本的其余部分 运行 都成功并完成了。

今天真的遇到了这个。 此查询的结果类型为 System.Data.Datarow。我猜你只是在 console/ISE 中输入 $Result? PowerShell 很不错,可以进行即时转换。

尝试 Write-Host "$Result",您应该会看到 System.Data.Datarow 而不是您的结果。

然后问题就变成了将这个 System.Data.Datarow 转换到哪里。这实际上取决于您的其余代码(这不是我的强项)。下面的惰性示例。

$Results | Out-file ".\Results.txt"
$csv = ConvertTo-Csv $Results

这是“解决方案”,虽然它真的感觉像是作弊。我尝试了不同的触发方法来启动脚本;首先是一个 .bat 文件,它在手动启动时也令人抓狂 运行,但在计划时也失败了。接下来,我编写了一个简单的 .vbs 脚本来启动 PowerShell 脚本,该脚本在手动 运行 时工作,并且至少从调度程序中正确地 运行 ......我无法解释它......