Есть ли способ использовать Powershell для установки того, что делает закрытие крышки ноутбука? [Дубликат]

Для других, которые находят эту запись SO через Google: убедитесь, что вы не пытаетесь выполнить действие SET NULL на столбце внешнего ключа, который будет указан как «NOT NULL». Это вызвало сильное разочарование, пока я не вспомнил, что нужно сделать CHECK ENGINE INNODB STATUS.

8
задан CraigJPerry 17 March 2013 в 01:19
поделиться

6 ответов

Попробуйте ускоритель 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()
2
ответ дан Andy Arismendi 26 August 2018 в 21:42
поделиться

Честно говоря, я не вижу причин, по которым вы не должны использовать инструменты, которые просто работают ...;) В любом случае: при работе с 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-запросом, это почти то же самое, что вы сделали, только бит изменен.

2
ответ дан BartekB 26 August 2018 в 21:42
поделиться

Этот бит 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.

2
ответ дан cmd 26 August 2018 в 21:42
поделиться

Что я видел в 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."
1
ответ дан Even Mien 26 August 2018 в 21:42
поделиться

Я нашел это на странице 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. Эти ссылки предназначены только для ведения журнала, поэтому вы можете смело либо комментировать их, либо изменять их в своей файловой структуре.

0
ответ дан Stephen Boston 26 August 2018 в 21:42
поделиться

Я хотел сделать то же самое и получить ту же самую проблему. Наконец, я обнаружил, что вам нужно вставить в свою командную строку ключи реестра, которые превосходят тот, который вы хотите изменить:

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)

2
ответ дан Vandal 26 August 2018 в 21:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: