1

Как я могу изменить шаг действия в запланированной задаче? У нас есть сотни запланированных задач, которые указывают на определенный путь и запускают сценарий PowerShell. Как мы можем найти эти задачи и затем изменить путь на шаге действия, не удаляя и не воссоздавая всю задачу?

1 ответ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)
    }

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .