sql-server-2005 - 在 2005 SQL Server 中从 SQL 代理作业运行脚本时,Powershell 脚本为空

标签 sql-server-2005 powershell sql-server-agent

我有一个复杂的 Powershell 脚本,它作为 SQL 2005 服务器代理作业的一部分运行。该脚本运行良好,但它使用“Start-Transcript $strLogfile -Append”命令将其所有操作记录到脚本文件中。问题是成绩单总是空的。它添加页眉和页脚以指示脚本正在开始和停止,但它实际上并没有记录任何内容。例子:

**********************
Windows PowerShell Transcript Start
Start time: 20100304173001
Username  : xxxxxxxxxxxx\SYSTEM 
Machine   : xxxxx-xxx (Microsoft Windows NT 5.2.3790 Service Pack 2) 
**********************
**********************
Windows PowerShell Transcript End
End time: 20100304173118
**********************

当我从命令提示符或 start -> run 执行脚本时,一切正常。这是用于运行脚本的命令(与 SQL 代理作业的操作系统 CmdExec 步骤中使用的命令相同)
powershell.exe -File "c:\temp\Backup\backup script.ps1"

我首先认为它一定与在系统帐户(默认 SQL 代理帐户)下运行的脚本有关,但即使我尝试将 SQL 代理更改为在我自己的个人帐户下运行,它仍然创建了一个空白脚本。

作为 2005 SQL Server 代理作业的一部分执行时,有什么方法可以让 PowerShell 脚本正常工作?

最佳答案

如果您的脚本使用 native 命令(控制台 exes),Start-Transript 不会记录任何该输出。这个问题已经logged on Connect ,你可以投票。捕获所有输入的一种方法是使用 cmd.exe:

cmd /c powershell.exe -file "C:\temp\backup script.ps1" > backup.log

关于sql-server-2005 - 在 2005 SQL Server 中从 SQL 代理作业运行脚本时,Powershell 脚本为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2383605/

相关文章:

c# - 您可以从 .net 运行 SSIS 任务吗?

sql-server - SQL 代理命令行未保存

sql - 如何填补空白?

sql-server-2005 - 如何在SQL中向新表添加行号?

powershell - 使用 Powershell 解析 XML 以在被子节点屏蔽时获取 .Name 属性的值

sql-server - SQL Server 代理作业失败时通知多个运算符(operator)

sql - 帮助了解用于创建通知计划的 SQL 结构

sql - 在 SQL Server 中查询 master..syslogins 需要什么权限?

excel - 将Excel变量解析到powershell中

azure - New-AzWebApp 选择 .NET Core 的堆栈设置