任务计划程序未执行 Powershell 脚本

任务计划程序未执行 Powershell 脚本

我有一个简单的 Powershell 脚本(ps1 文件),它可以清除现有文件的内容,然后将服务的日期和状态附加到该文件:

Clear-Content \\MyDomain\Homes\Usr\MyUser\"Mijn Documenten"\Desktop\ScriptOutput\test.txt
Get-Date -Format "yyyy-MM-dd HH:mm:ss" | Out-File -encoding ascii \\MyDomain\Homes\Usr\MyUser\"Mijn Documenten"\Desktop\ScriptOutput\test.txt -NoNewline 
" : " | Out-File -encoding ascii \\MyDomain\Homes\Usr\MyUser\"Mijn Documenten"\Desktop\ScriptOutput\test.txt -NoNewline -append 
(Get-Service MyService).status | Out-File -encoding ascii \\MyDomain\Homes\Usr\MyUser\"Mijn Documenten"\Desktop\ScriptOutput\test.txt -NoNewline -append

执行此脚本时(右键单击 -> 使用 Powershell 运行),文件夹脚本输出我的桌面上有这个文件测试.txt内容如下:

2021-12-22 11:41:54 : Running

当我尝试使用任务计划程序每 5 分钟安排一次此任务时,我可以看到 Powershell 窗口每 5 分钟弹出一瞬间,但文件 (test.txt) 未填充最新数据。我希望每次执行脚本时都有不同的时间戳。

该任务的属性为:

一般的

在此处输入图片描述

触发(每日)(每 5 分钟)

在此处输入图片描述

操作

在此处输入图片描述

其中程序/脚本:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

和参数:

-File C:\Scripts\FNMS Scripts\Beacon Server Service Logging Script\beaconscript_v1.0.ps1

为什么脚本不会执行并使用最新的时间戳更新 test.txt?

答案1

发生这种情况是因为Window 的执行策略,默认情况下不允许运行未签名的脚本。您需要更改此策略才能使脚本正常运行。

  1. 打开提升的 Powershell 提示符。
  2. 键入Set-ExecutionPolicy Unrestricted以将策略设置为“不受限制”。
  3. 键入Get-ExecutionPolicy以验证执行策略的当前设置。

请注意,更改此设置会带来安全威胁,因为其他程序也可以运行恶意脚本。您可以尝试编写同一脚本的批处理脚本分支,然后使用它来代替此脚本。Windows 执行策略不会阻止批处理脚本。

相关内容