使用powershell替换管道名称

时间:2017-02-27 06:46:44

标签: xml powershell taskscheduler

我试图在Windows任务调度程序中注册一个任务,方法是将XML文件作为字符串读取并能够成功完成,另外我想要做的是替换{plname}(它存在于XML中)用任务名称。

<Exec>
  <Command>notepad.exe</Command>
   <Arguments>-Command "&amp;{ &amp; "./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

1 个答案:

答案 0 :(得分:1)

您忘记使用替换值更新 $ taskTempate 变量。

$taskTemplate = $taskTemplate -replace "{plname}", $taskName