在PowerShell中从sqlcmd返回计划任务null值

时间:2015-11-18 15:53:57

标签: powershell scheduled-tasks sqlcmd

我有一个PowerShell脚本,它从Windows Server 2008R2服务器运行SQL查询;当使用域管理员/服务帐户登录到服务器时,脚本将运行并从基本PS和ISE完成。如果我使用任务计划程序中的相同管理员/服务帐户安排相同的脚本,则查询不会返回任何值。计划任务以“以最高权限运行”运行.PowerShell为V4。

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

手动运行$Result时总是返回一个值,而计划任务$Result始终为空。在这两个实例中,脚本的其余部分成功运行并完成。

2 个答案:

答案 0 :(得分:0)

直截了当地面对今天。 此查询的结果是System.Data.Datarow类型。我猜你只是在控制台/ ISE中输入$Result? PowerShell很不错并且正在进行实时转换。

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

然后问题就变成了将System.Data.Datarow转换为的地方。这实际上取决于你的其余代码(并不是我的强项)。下面的懒惰例子。

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

答案 1 :(得分:0)

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