Для других, которые находят эту запись SO через Google: убедитесь, что вы не пытаетесь выполнить действие SET NULL на столбце внешнего ключа, который будет указан как «NOT NULL». Это вызвало сильное разочарование, пока я не вспомнил, что нужно сделать CHECK ENGINE INNODB STATUS.
Попробуйте ускоритель WMI:
$class = ([wmi] '\root\cimv2\power:Win32_PowerSettingDataIndex.InstanceID="Microsoft:PowerSettingDataIndex\\{8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c}\\DC\\{5ca83367-6e45-459f-a27b-476b1d01c936}"')
$class.SettingIndexValue = 0
$class.Put()
Честно говоря, я не вижу причин, по которым вы не должны использовать инструменты, которые просто работают ...;) В любом случае: при работе с WMI обычно рекомендуется фильтровать столько, сколько вы можете оставить слева. Здесь не должно быть большой разницы, но временами разница огромна. Вот как я мог бы сделать это с WMI:
$Name = @{
Namespace = 'root\cimv2\power'
}
$ID = (Get-WmiObject @Name Win32_PowerPlan -Filter "IsActive = TRUE") -replace '.*(\{.*})"', '$1'
$Lid = '{5ca83367-6e45-459f-a27b-476b1d01c936}'
Get-WmiObject @Name Win32_PowerSettingDataIndex -Filter "InstanceId LIKE '%$Id\\%C\\$Lid'" |
Set-WmiInstance -Arguments @{ SettingIndexValue = 0 }
Может быть, лучше с более сложным WQL-запросом, это почти то же самое, что вы сделали, только бит изменен.
Этот бит PowerShell действительно меняет настройки реестра, но он не меняет поведение моих ноутбуков при закрытии крышки. Использование powercfg
делает то же самое, что и этот объект WMI.
По-видимому, в подсистеме реестра PowerButtons and Lid
есть 2 разных набора записей в реестре.
Этот скрипт и одинаковые команды в powercfg
, измените эту подгруппу в пределах от Power Options >> Advanced Settings
до Do Nothing
(или Sleep
или Hibernate
или любой номер опции из 0 - 3
, который вы установили), но в пределах фактических настроек панели управления для Change what the power buttons do
и Change what closing the lid does
не затронуты.
Если я использую powercfg
или аналогичный сценарий PS для того, что было написано выше, я могу на самом деле Change Plan Settings
получить желаемое поведение для затемнения дисплея (или что-то еще). Я просто не могу найти ничего, что будет работать для подгруппы Power Buttons and Lid
.
Что я видел в Windows 8.1, так это то, что когда действие крышки изменяется для схемы питания, тогда эта схема питания должна быть как активной, так и предпочтительной схемой питания. Схема активной мощности может быть установлена PowerCfg, и предпочтительная схема мощности может быть установлена реестром.
Вот сценарий Powershell для их изменения и действия с крышкой:
#Enable High performance
$powerScheme = "High performance"
#Find selected power scheme guid
$guidRegex = "(\{){0,1}[a-fA-F0-9]{8}-([a-fA-F0-9]{4}-){3}[a-fA-F0-9]{12}(\}){0,1}"
[regex]$regex = $guidRegex
$guid = ($regex.Matches((PowerCfg /LIST | where {$_ -like "*$powerScheme*"}).ToString())).Value
#Change preferred scheme
$regGuid = "{025A5937-A6BE-4686-A844-36FE4BEC8B6D}"
$currentPreferredScheme = Get-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\ControlPanel\NameSpace\$regGuid -Name PreferredPlan
if ($currentPreferredScheme.PreferredPlan -ne $guid) {
Set-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\ControlPanel\NameSpace\$regGuid -Name PreferredPlan -Value $guid
Write-Host -ForegroundColor Green "Preferred scheme successfully changed. Preferred scheme is now '$powerScheme'."
} else {
Write-Host -ForegroundColor Yellow "Preferred scheme does not need to be changed. Preferred scheme is '$powerScheme'."
}
#Change active scheme
$currentActiveScheme = PowerCfg /GETACTIVESCHEME
if ($currentActiveScheme | where {$_ -notlike "*$guid*"}) {
PowerCfg /SETACTIVE $guid
Write-Host -ForegroundColor Green "Power scheme successfully changed. Current scheme is now '$powerScheme'."
} else {
Write-Host -ForegroundColor Yellow "Power scheme does not need to be changed. Current scheme is '$powerScheme'."
}
#Do not sleep when closing lid on AC
PowerCfg /SETACVALUEINDEX $guid SUB_BUTTONS LIDACTION 000
Write-Host -ForegroundColor Green "No action when closing lid on AC."
Я нашел это на странице Microsoft. Требует согласия на условия использования. Работает для W10.
https://gallery.technet.microsoft.com/scriptcenter/Quickly-change-the-lid-b78eb77d
lid on (sets to 'do nothing')
lid off (sets to 'sleep')
Сценарий, опубликованный сегодня утром, содержит две жестко закодированные ссылки на c: \ tools. Эти ссылки предназначены только для ведения журнала, поэтому вы можете смело либо комментировать их, либо изменять их в своей файловой структуре.
Я хотел сделать то же самое и получить ту же самую проблему. Наконец, я обнаружил, что вам нужно вставить в свою командную строку ключи реестра, которые превосходят тот, который вы хотите изменить:
powercfg -setacvalueindex 5ca83367-6e45-459f-a27b-476b1d01c936 0
powercfg -setdcvalueindex 5ca83367-6e45-459f-a27b-476b1d01c936 0
должно стать:
powercfg -setacvalueindex 381b4222-f694-41f0-9685-ff5bb260df2e 4f971e89-eebd-4455-a8de-9e59040e7347 5ca83367-6e45-459f-a27b-476b1d01c936 0
powercfg -setdcvalueindex 381b4222-f694-41f0-9685-ff5bb260df2e 4f971e89-eebd-4455-a8de-9e59040e7347 5ca83367-6e45-459f-a27b-476b1d01c936 0
Просто поместите это в BAT-файл, и вы готовы к работе! Решение найдено в блоге iBoyd (iboyd.net)