簡體   English   中英

計划的PowerShell任務將不會寫入文件

[英]Scheduled PowerShell task won't write to file

我有一個PowerShell(PS)腳本,我想每天早上5:00執行,我想運行它以使其自動運行,因此我通過Task Scheduler(運行Windows 7 Ultimate SP1,64位)進行了調度。 作為測試,我編寫了一個簡單的PS腳本,該腳本僅附加到帶有時間戳的文本文件中。 它正在運行-我可以看到PowerShell窗口打開並且它寫出PS日志-但它不會寫入文本文件。

該腳本可以從命令行和PS Shell正常運行。 無論是在計划時間還是從Task Scheduler列表中單擊鼠標右鍵並選擇“運行”,它都無法從Task Scheduler中運行。 兩次都運行,但不寫入文本文件。

在任務計划程序中,將“操作”設置為啟動程序PowerShell.exe。 對於“添加參數”,我具有:-NoProfile -ExecutionPolicy繞過-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

為了使計划任務寫入文本文件,我需要做些特殊的事情嗎?

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

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

指定啟動目錄可能也可以。 謝謝您的幫助!

計划任務不在腳本目錄中運行。 您需要在“計划任務”編輯器中設置該目錄。 我相信這是“開始於”字段。

如果輸出文件始終位於同一位置,則可以使用完整的絕對路徑。 為了提高可移植性,請使用相對於腳本Join-Path -Path $PSScriptRoot -ChildPath 'aTestScriptOutput.txt' ,例如Join-Path -Path $PSScriptRoot -ChildPath 'aTestScriptOutput.txt'

最后的建議:如果您的輸出文件僅包含文本,請將管道輸出到Set-Content而不是使用>>重定向。 UTF-16中的>>運算符輸出,在您嘗試查看時會引起悲傷。

您應該以最高特權(在任務定義中)運行任務,以使其寫入文件夾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM