使用 PowerShell 修改计划任务

使用 PowerShell 修改计划任务

如何修改计划任务中的操作步骤?我们有数百个计划任务指向特定路径并运行 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)
    }

相关内容