使用 powershell 替换管道名称

Replace pipeline name using powershell

我正在尝试通过将 XML 文件作为字符串读取并能够成功地在 windows 任务调度程序中注册任务,另外我想做的是替换 { 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

现在,当我 运行 "Register-ScheduledTask" cmdlet 成功注册任务时,但在 Task Scheduler 的 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

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

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