我有一个PowerShell脚本,它从Windows Server 2008R2服务器运行SQL查询;当使用域管理员/服务帐户登录到服务器时,脚本将运行并从基本PS和ISE完成。如果我使用任务计划程序中的相同管理员/服务帐户安排相同的脚本,则查询不会返回任何值。计划任务以“以最高权限运行”运行.PowerShell为V4。
$Result = Invoke-Sqlcmd -ServerInstance Server -Database Database -Query $Query
手动运行$Result
时总是返回一个值,而计划任务$Result
始终为空。在这两个实例中,脚本的其余部分成功运行并完成。
答案 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脚本,该脚本在手动运行时起作用,至少从调度程序中运行正确...我无法解释...