Загрузка данных
#Requires -RunAsAdministrator
$ErrorActionPreference = "Continue"
$ErrorLog = "$env:ProgramData\AlwaysOn-setup.log"
Start-Transcript -Path $ErrorLog -Append | Out-Null
function Section($Name) {
Write-Host "`n========== $Name ==========" -ForegroundColor Cyan
}
function TryPower($Arguments) {
& powercfg @Arguments
if ($LASTEXITCODE -ne 0) {
Write-Host "Ошибка powercfg: $Arguments" -ForegroundColor Yellow
}
}
Section "1. Питание"
TryPower @("/setactive", "SCHEME_MIN")
TryPower @("/change", "monitor-timeout-ac", "0")
TryPower @("/change", "monitor-timeout-dc", "0")
TryPower @("/change", "disk-timeout-ac", "0")
TryPower @("/change", "disk-timeout-dc", "0")
TryPower @("/change", "standby-timeout-ac", "0")
TryPower @("/change", "standby-timeout-dc", "0")
TryPower @("/change", "hibernate-timeout-ac", "0")
TryPower @("/change", "hibernate-timeout-dc", "0")
TryPower @("/hibernate", "off")
# Дополнительные параметры по GUID, чтобы не зависеть от локализации
$settings = @(
# USB selective suspend
@("2a737441-1930-4402-8d77-b2bebba308a3",
"48e6b7a6-50f5-4782-a5d4-53bb8f07e226", 0),
# PCI Express ASPM
@("501a4d13-42af-4429-9fd1-a8218c268e20",
"ee12f906-d277-404b-b6da-e5fa1a576df5", 0),
# Кнопка питания
@("4f971e89-eebd-4455-a8de-9e59040e7347",
"7648efa3-dd9c-4e3e-b566-50f929386280", 0),
# Кнопка сна
@("4f971e89-eebd-4455-a8de-9e59040e7347",
"96996bc0-ad50-47ec-923b-6f41874dd9eb", 0),
# Закрытие крышки
@("4f971e89-eebd-4455-a8de-9e59040e7347",
"5ca83367-6e45-459f-a27b-476b1d01c936", 0),
# Таймеры пробуждения
@("238c9fa8-0aad-41ed-83f4-97be242c8f20",
"bd3b718a-0680-4d9d-8ab2-e1d2b4ac806d", 0)
)
foreach ($s in $settings) {
$subgroup = $s[0]
$setting = $s[1]
$value = $s[2]
TryPower @("/setacvalueindex", "SCHEME_CURRENT",
$subgroup, $setting, "$value")
TryPower @("/setdcvalueindex", "SCHEME_CURRENT",
$subgroup, $setting, "$value")
}
TryPower @("/setactive", "SCHEME_CURRENT")
Section "2. Заставка текущего пользователя"
$desktop = "HKCU:\Control Panel\Desktop"
Set-ItemProperty $desktop ScreenSaveActive "0"
Set-ItemProperty $desktop ScreenSaverIsSecure "0"
Set-ItemProperty $desktop ScreenSaveTimeOut "0"
# Настройки политики заставки для текущего пользователя
$pol = "HKCU:\Software\Policies\Microsoft\Windows\Control Panel\Desktop"
New-Item $pol -Force | Out-Null
Set-ItemProperty $pol ScreenSaveActive "0"
Set-ItemProperty $pol ScreenSaverIsSecure "0"
Section "3. Тайм-аут бездействия"
$security = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System"
$current = (Get-ItemProperty $security `
-Name InactivityTimeoutSecs -ErrorAction SilentlyContinue).InactivityTimeoutSecs
if ($null -eq $current -or $current -eq 0) {
Set-ItemProperty $security InactivityTimeoutSecs `
-Type DWord -Value 0
Write-Host "Тайм-аут отключён или не задан."
} else {
Write-Host "Обнаружен тайм-аут $current секунд." -ForegroundColor Yellow
Write-Host "Параметр не изменён автоматически: проверьте доменную GPO."
}
Section "4. Применение политик"
gpupdate /target:computer /force
gpupdate /target:user /force
Section "5. Проверка схемы и сна"
powercfg /getactivescheme
powercfg /availablesleepstates
Section "6. Проверка тайм-аутов"
powercfg /query SCHEME_CURRENT SUB_SLEEP
powercfg /query SCHEME_CURRENT SUB_DISK
powercfg /query SCHEME_CURRENT SUB_VIDEO
powercfg /query SCHEME_CURRENT SUB_USB
powercfg /query SCHEME_CURRENT SUB_PCIEXPRESS
powercfg /query SCHEME_CURRENT SUB_BUTTONS
Section "7. Проверка запросов питания"
powercfg /requests
Section "8. Проверка блокировки"
Get-ItemProperty $security `
-Name InactivityTimeoutSecs -ErrorAction SilentlyContinue |
Select-Object InactivityTimeoutSecs | Format-List
Get-ItemProperty $desktop `
-Name ScreenSaveActive, ScreenSaverIsSecure, ScreenSaveTimeOut |
Format-List
Section "9. Проверка обновлений Windows"
Get-Service wuauserv, UsoSvc -ErrorAction SilentlyContinue |
Select-Object Name, Status, StartType | Format-Table -AutoSize
$wuPaths = @(
"HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU",
"HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings"
)
foreach ($path in $wuPaths) {
if (Test-Path $path) {
Write-Host "`n$path"
Get-ItemProperty $path | Format-List *
} else {
Write-Host "$path - отдельные параметры не заданы"
}
}
Section "10. Последние перезагрузки"
Get-WinEvent -FilterHashtable @{
LogName = "System"
Id = 41, 1074, 6005, 6006, 6008
} -MaxEvents 15 -ErrorAction SilentlyContinue |
Select-Object TimeCreated, Id, ProviderName, Message |
Format-List
Section "11. Отчёт групповых политик"
$report = "$env:ProgramData\AlwaysOn-gpresult.html"
gpresult /h $report /f
Write-Host "Отчёт: $report"
Section "12. Завершение"
Write-Host "Настройка и диагностика завершены." -ForegroundColor Green
Write-Host "Журнал: $ErrorLog"
Write-Host "Обновления Windows не отключались."
Write-Host "Доменная политика может переопределять локальные параметры."
Stop-Transcript | Out-Null
Read-Host "Нажмите Enter для выхода"