我试图在Windows任务调度程序中注册一个任务,方法是将XML文件作为字符串读取并能够成功完成,另外我想要做的是替换{plname}(它存在于XML中)用任务名称。
<Exec>
<Command>notepad.exe</Command>
<Arguments>-Command "&{ & "./pl.ps1 {plname} run" }"</Arguments>
<WorkingDirectory>C:\Windows\System32\Tasks\Power</WorkingDirectory>
</Exec>
当我运行我的PS脚本(不包括Register-ScheduledTask cmdlet)时,我可以看到{plname}被替换。 font is small but you can see {plname} is replaced by openNotepad
现在,当我运行“注册-ScheduledTask” cmdlet将它成功,但在任务计划程序的GUI它没有显示之前完成更换注册的任务。 {plname} was replaced earlier with openNotepad, but has reverted back to its previous state.
希望我已经清楚了。 这是我的剧本,以防万一。
$taskName = "openNotepad"
$taskTemplate = Get-Content (join-path "C:\Users\ACER\Desktop\POWERSHELL" "task-scheduler-template.xml" ) | Out-String
$taskTemplate -replace "{plname}", $taskName
Register-ScheduledTask -Xml $taskTemplate -TaskPath "\Power\" -TaskName $taskName
答案 0 :(得分:1)
您忘记使用替换值更新 $ taskTempate 变量。
$taskTemplate = $taskTemplate -replace "{plname}", $taskName