计划的PowerShell任务不会写入文件

时间:2014-08-14 15:08:42

标签: powershell scheduled-tasks

我有一个PowerShell(PS)脚本,我想每天早上5点执行,我想运行它自动运行,所以我通过任务计划程序安排它(运行Windows 7 Ultimate SP1,64位)。作为测试,我写了一个简单的PS脚本,它只是附加到带有时间戳的文本文件中。它运行 - 我可以看到PowerShell窗口打开并写出PS日志 - 但它没有写入文本文件。

脚本从命令行和PS shell运行良好。它不能从任务计划程序工作,无论是从计划时间还是从任务计划程序列表,右键单击并选择运行。它都运行,但不会写入文本文件。

在任务计划程序中,我有"操作"设置为启动程序PowerShell.exe。对于"添加参数",我有:     -NoProfile -ExecutionPolicy Bypass -Command C:\ AccessTask \ ATestScript.ps1

脚本本身很简单:

Start-Transcript -path "C:\Temp\aTestScript.log" -Verbose

write-output "Start";

# just write one line to file
write-output "Logging";
$text = Get-Date
$text >> 'aTestScriptOutput.txt'

write-output $error[0] | fl -force
write-output "Quit";

Stop-Transcript

为了让计划任务写入文本文件,我需要做些什么特别的事情吗?

3 个答案:

答案 0 :(得分:1)

添加文件的完整路径就是答案:

$text >> 'C:\Temp\aTestScriptOutput.txt'

指定启动目录可能也有效。谢谢你的帮助!

答案 1 :(得分:0)

计划任务不会在脚本目录中运行。您需要在“计划任务”编辑器中设置该目录。我相信这是“开始”字段。

如果输出文件始终位于同一位置,则可以使用完整的绝对路径。要提高可移植性,请使用相对于脚本的路径,例如Join-Path -Path $PSScriptRoot -ChildPath 'aTestScriptOutput.txt'

上次建议:如果您的输出文件只包含文本,则输出管道输出到Set-Content,而不是使用>>重定向。 >>运算符以UTF-16输出,当您尝试查看它时可能会导致悲伤。

答案 2 :(得分:0)

您应该使用最高权限(在任务定义中)运行任务,以使其写入文件夹。