我有一个复杂的 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/