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 脚本,该脚本在手动 运行 时工作,并且至少从调度程序中正确地 运行 ......我无法解释它......
我有一个 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 脚本,该脚本在手动 运行 时工作,并且至少从调度程序中正确地 运行 ......我无法解释它......