![使用 PowerShell 修改计划任务](https://linux22.com/image/1410960/%E4%BD%BF%E7%94%A8%20PowerShell%20%E4%BF%AE%E6%94%B9%E8%AE%A1%E5%88%92%E4%BB%BB%E5%8A%A1.png)
如何修改计划任务中的操作步骤?我们有数百个计划任务指向特定路径并运行 PowerShell 脚本。我们如何找到这些任务,然后在操作步骤中更改路径,而无需删除并重新创建整个任务?
答案1
计划任务包含在 C:\Windows\System32\Tasks\ 中,包含 XML 文件。虽然 Petri 文章是 Windows 8 和 Windows Server 2012 的一个很好的解决方案,但这并不是一个完整的解决方案。这应该允许您使用特定命令或参数查找任务并替换它们。
$computer = "localhost"
$oldCommand = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
$oldArguments = "-File `"C:\Users\Public\Scripts\oldScript.ps1`""
$newCommand = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
$newArguments = "-File `"C:\Users\Public\Scripts\newScript.ps1`""
$tasks = Get-ChildItem "\\$computer\c$\Windows\System32\Tasks\" | Where-Object {
$_.PSIsContainer -eq $false `
-and `
(([xml](Get-Content -Path $_.FullName)).Task.Actions.Exec.Command -like $oldCommand) `
-and `
(([xml](Get-Content -Path $_.FullName)).Task.Actions.Exec.Arguments -like $oldArguments)
}
$tasks | ForEach-Object {
$xml = [xml](Get-Content -Path $_.FullName)
$xml.Task.Actions.Exec.Command = $newCommand
$xml.Task.Actions.Exec.Arguments = $newArguments
$xml.Save($_.FullName)
}