Скрипт выполняет проверку и восстановление системных файлов Windows, очищает временные файлы и управляет службой обновления Windows. Он автоматически обрабатывает ошибки на каждом этапе выполнения.
Этот скрипт на PowerShell состоит из следующих этапов:
- Проверка прав администратора:
- Убедится, что скрипт запущен с правами администратора.
- Если права недостаточны, завершает выполнение с предупреждением.
- Управление службой обновления Windows:
- Остановка службы обновления Windows (
wuauserv
) перед выполнением операций восстановления, чтобы избежать конфликтов. - Перезапуск службы обновления Windows в конце, чтобы система могла продолжить проверку обновлений.
- Остановка службы обновления Windows (
- Проверка и восстановление системных файлов:
- Выполняет проверку целостности системного образа Windows с помощью DISM:
CheckHealth
: Быстрая проверка состояния образа.RestoreHealth
: Восстановление повреждённого системного образа.
- Использует SFC для проверки и восстановления системных файлов.
- Выполняет проверку целостности системного образа Windows с помощью DISM:
- Очистка временных файлов:
- Удаляет временные файлы в системных каталогах:
- Системный каталог
C:\Windows\Temp
. - Временные файлы текущего пользователя
C:\Users\<Имя>\AppData\Local\Temp
.
- Системный каталог
- Для каждого профиля пользователя, кроме системных, выполняет очистку временных файлов из папки
Temp
.
- Удаляет временные файлы в системных каталогах:
- Обработка ошибок:
- Каждый этап обёрнут в конструкцию
try-catch
для предотвращения полного завершения скрипта при возникновении ошибок. - Выводит информативные сообщения в случае возникновения проблем, чтобы пользователь мог диагностировать ситуацию.
- Каждый этап обёрнут в конструкцию
- Сообщения для пользователя:
- Каждый шаг сопровождается информацией в консоли, чтобы пользователь понимал, что происходит в данный момент.
Для чего предназначен скрипт
Скрипт полезен для:
- Восстановления стабильности операционной системы.
- Устранения проблем с системными файлами и обновлениями.
- Очистки временных файлов для освобождения места и улучшения производительности.
Примечание
Перед использованием рекомендуется сохранить данные и протестировать скрипт в тестовой среде, чтобы избежать потери важной информации.
Скрипт:
# Проверяем права администратора
if (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { Write-Warning "Скрипт должен быть запущен с правами администратора!" Exit
}
# Останавливаем службу обновления Windows
try { Write-Host "Останавливаем службу обновления Windows..." Stop-Service -Name wuauserv -Force -ErrorAction Stop
} catch { Write-Warning "Не удалось остановить службу обновления Windows: $_"
}
# Проверка целостности образа Windows с помощью DISM
Write-Host "Проверка целостности образа Windows с помощью DISM..."
try { Start-Process -FilePath "dism.exe" -ArgumentList "/Online /Cleanup-Image /CheckHealth" -Wait -NoNewWindow
} catch { Write-Warning "Ошибка при выполнении проверки целостности образа: $_"
}
# Восстановление образа Windows с помощью DISM
Write-Host "Восстановление образа Windows с помощью DISM..."
try { Start-Process -FilePath "dism.exe" -ArgumentList "/Online /Cleanup-Image /RestoreHealth" -Wait -NoNewWindow
} catch { Write-Warning "Ошибка при восстановлении образа: $_"
}
# Проверка целостности системных файлов
Write-Host "Проверка целостности системных файлов..."
try { Start-Process -FilePath "sfc.exe" -ArgumentList "/scannow" -Wait -NoNewWindow
} catch { Write-Warning "Ошибка при проверке системных файлов: $_"
}
# Очистка временных файлов
Write-Host "Очистка временных файлов..."
try { Remove-Item -Path "$env:SystemRoot\Temp\*" -Recurse -Force -ErrorAction SilentlyContinue Remove-Item -Path "$env:USERPROFILE\AppData\Local\Temp\*" -Recurse -Force -ErrorAction SilentlyContinue
} catch { Write-Warning "Ошибка при очистке временных файлов: $_"
}
# Получаем список профилей пользователей
$userProfiles = Get-CimInstance Win32_UserProfile | Where-Object { $_.Special -ne $true }
foreach ($profile in $userProfiles) { try { # Путь к временным файлам текущего пользователя $tempPath = Join-Path -Path $profile.LocalPath -ChildPath "AppData\Local\Temp\*" Write-Host "Очистка временных файлов для пользователя $($profile.LocalPath)" Remove-Item -Path $tempPath -Recurse -Force -ErrorAction SilentlyContinue } catch { Write-Warning "Ошибка при очистке временных файлов для пользователя $($profile.LocalPath): $_" }
}
# Перезапуск службы обновления Windows
try { Write-Host "Перезапуск службы обновления Windows..." Start-Service -Name wuauserv -ErrorAction Stop
} catch { Write-Warning "Не удалось перезапустить службу обновления Windows: $_"
}