Как я могу изменить шаг действия в запланированной задаче? У нас есть сотни запланированных задач, которые указывают на определенный путь и запускают сценарий PowerShell. Как мы можем найти эти задачи и затем изменить путь на шаге действия, не удаляя и не воссоздавая всю задачу?
1 ответ
1
Запланированные задачи содержатся в C:\Windows\System32\Tasks\ и содержат файлы XML. Хотя статья Петри является хорошим решением для 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)
}