Скрипт, который для Windows Server 2003 (в котором нет Get-ScheduledTask):
1. Останавливает запущенные задания
2. Переносит логи рекурсивно не сохраняя структуры директорий
3. Запускает остановленные задания
Bat файл для запуска
@ECHO OFF
PowerShell.exe -NoProfile -ExecutionPolicy Bypass -Command "& '%~dpn0.ps1'"
PAUSE
Скрипт Powershell
$Source = "C:\Work\bat\source"
$Target = "C:\Work\bat\target"
Write-Host "Stoping tasks"
$scheduledTasks = schtasks /query /fo csv | ConvertFrom-Csv
$runningTasks =@()
foreach($task in $scheduledTasks)
{
if ($task.Status -eq 'Running' -and $task.taskName -eq 'testTask') {
$runningTasks += $task.taskName
Write-Host $task.taskName " will be stopped"
schtasks /END /TN $task.taskName
}
}
Write-Host "Moving files from $Source to $Target"
Get-Childitem $Source -recurse -include *.txt | Move-Item -destination $Target -force
Write-Host "Starting Tasks"
if ($runningTasks.count -gt 0) {
foreach($runningTask in $runningTasks)
{
Write-Host "$runningTask starting"
schtasks /RUN /TN $runningTask
}
}