为睡眠和休眠设置单行 powershell 以关闭

Posted

技术标签:

【中文标题】为睡眠和休眠设置单行 powershell 以关闭【英文标题】:Set a one line powershell for sleep and hibernate to turn off 【发布时间】:2016-02-20 19:58:49 【问题描述】:
powershell -Command "& c:\windows\system32\powercfg.exe -change -monitor-timeout-ac 0; c:\windows\system32\powercfg.exe - change - monitor - timeout - dc 0; c:\windows\system32\powercfg.exe - change - disk - timeout - ac 0; c:\windows\system32\powercfg.exe - change - disk - timeout - dc 0; c:\windows\system32\powercfg.exe - change - standby - timeout - ac 0; c:\windows\system32\powercfg.exe - change - standby - timeout - dc 0; c:\windows\system32\powercfg.exe - change - hibernate - timeout - ac 0; c:\windows\system32\powercfg.exe - change - hibernate - timeout - dc 0 "

如何正确编写此代码?我想一次设置多个电源选项以关闭休眠和睡眠模式。

【问题讨论】:

嗨,为什么是一行?为什么是 PowerShell ?这些命令本身就非常有效:)。 “正确”是什么意思?它不是已经完全按照您的意愿行事了吗? 我同意第一条评论:为什么要在 PowerShell 中这样做?根据我的经验,(除非您熟悉解析引擎)普通的 .exe 命令(例如 powercfg.exe)在 PowerShell 中可以工作,但是有些约定也不能很好地工作,如果您是不做任何形式的检查/处理,甚至不值得为此使用外壳。但是,如果您想继续使用 PowerShell(在这种情况下不需要,但您当然可以),并且想要有一行,您可以将该单行转换为脚本,然后调用脚本。 我只使用了 powershell,因为它似乎总是比命令提示符更快,但任何一个都可以 我想确保我的语法就在这里。 【参考方案1】:
var newProcessInfo = new System.Diagnostics.ProcessStartInfo();
        newProcessInfo.FileName = @"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe";
        newProcessInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; // hide processes as they happen
        newProcessInfo.Verb = "runas"; // run as administrator
        newProcessInfo.Arguments = @"-executionpolicy unrestricted -Command ""c:\power\powercfg.bat"""; //you can use the -noexit to troubleshoot and see the commands
        System.Diagnostics.Process.Start(newProcessInfo);

批处理文件(c:\power\powercfg.bat):

@echo off
powercfg.exe -x -monitor-timeout-ac 0
powercfg.exe -x -monitor-timeout-dc 0
powercfg.exe -x -disk-timeout-ac 0
powercfg.exe -x -disk-timeout-dc 0
powercfg.exe -x -standby-timeout-ac 0
powercfg.exe -x -standby-timeout-dc 0
powercfg.exe -x -hibernate-timeout-ac 0
powercfg.exe -x -hibernate-timeout-dc 0

这效果最好。

【讨论】:

为什么要用C#启动PowerShell来执行批处理文件? 因为您正在为其他技术人员制作用户界面.... Powershell 是最强大的,它使编程与其他类型的高级命令保持一致。 无关紧要,但我不明白为什么powercfg.exe -x -disk-timeout-ac 应该为所有驱动器设置相同的设置。知道每个驱动器是否可以有不同的配置? 我猜在设备管理器下的实际驱动程序中。我在那里看到过睡眠设置,但这取决于驱动器/品牌。

以上是关于为睡眠和休眠设置单行 powershell 以关闭的主要内容,如果未能解决你的问题,请参考以下文章

win2012系统如何关闭休眠

求助,Windows 2008如何配置睡眠(Sleep)、休眠(hibernate)、混合休眠(Hybird Sleep)、标准睡眠(Standby)

ubuntu 笔记本电脑合上后就自动休眠了,怎么改成合上只关闭屏幕?

运行PowerShell进程时如何阻止Windows 10机器休眠/休眠?

电脑的休眠和睡眠有啥区别

Windows 7关闭睡眠(休眠)模式和删除休眠文件