从 PowerShell 挂起或休眠

2024-07-03

我有兴趣使用 Windows PowerShell 挂起或休眠计算机。你如何实现这一目标?

我已经知道Stop-Computer and Restart-Computercmdlet,它们是开箱即用的,但它们并没有实现我想要的功能。


您可以使用SetSuspendState方法上的System.Windows.Forms.Application类来实现这一点。这SetSuspendState方法是静态方法。

[MSDN] 设置挂起状态 http://msdn.microsoft.com/en-us/library/system.windows.forms.application.setsuspendstate%28v=vs.110%29.aspx

有三个参数:

  • State [System.Windows.Forms.PowerState]
  • Force [bool]
  • 禁用唤醒事件[bool]

要致电SetSuspendState method:

# 1. Define the power state you wish to set, from the
#    System.Windows.Forms.PowerState enumeration.
$PowerState = [System.Windows.Forms.PowerState]::Suspend;

# 2. Choose whether or not to force the power state
$Force = $false;

# 3. Choose whether or not to disable wake capabilities
$DisableWake = $false;

# Set the power state
[System.Windows.Forms.Application]::SetSuspendState($PowerState, $Force, $DisableWake);

将其放入更完整的函数中可能看起来像这样:

function Set-PowerState {
    [CmdletBinding()]
    param (
          [System.Windows.Forms.PowerState] $PowerState = [System.Windows.Forms.PowerState]::Suspend
        , [switch] $DisableWake
        , [switch] $Force
    )

    begin {
        Write-Verbose -Message 'Executing Begin block';

        if (!$DisableWake) { $DisableWake = $false; };
        if (!$Force) { $Force = $false; };

        Write-Verbose -Message ('Force is: {0}' -f $Force);
        Write-Verbose -Message ('DisableWake is: {0}' -f $DisableWake);
    }

    process {
        Write-Verbose -Message 'Executing Process block';
        try {
            $Result = [System.Windows.Forms.Application]::SetSuspendState($PowerState, $Force, $DisableWake);
        }
        catch {
            Write-Error -Exception $_;
        }
    }

    end {
        Write-Verbose -Message 'Executing End block';
    }
}

# Call the function
Set-PowerState -PowerState Hibernate -DisableWake -Force;

注意:在我的测试中,-DisableWake据我所知,选项没有产生任何明显的差异。即使此参数设置为,我仍然能够使用键盘和鼠标唤醒计算机$true.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 PowerShell 挂起或休眠 的相关文章

  • 我可以中断标有 DebuggerStepThrough 属性的方法吗?

    DebuggerStepThrough 属性告诉调试器跳过该方法 但是如果我真的想单步执行该方法并且不想删除该属性怎么办 有没有办法在 Visual Studio 中做到这一点 按 F12 转到方法定义 然后在单步执行之前在左大括号上放置一
  • 正在更改的线程参数

    当启动多个线程时 id我正在解析的参数有时是错误的 这是我的启动 for int i 0 i lt threadCount i Thread thread new Thread gt WorkerThread i thread Start
  • 如何在.Net 中将上传的 RGB 格式图像转换为 CMYK 格式?

    我需要将图像转换并保存为 CMYK 格式 当我上传 RGB 格式的图像时 我需要将其转换为 CMYK 在 Net中可能吗 谢谢 正如其他人提到的 NET 本身并不支持图像色彩空间调整 然而 图像魔术师 http www imagemagic
  • .net 新进程沙箱用于不受信任的代码

    所以我需要在新进程中运行动态编译的不受信任的代码 我找到了如何在新的 AppDomain http msdn microsoft com en us library bb763046 aspx 中执行此操作 但没有在新进程中执行此操作 可以
  • 更改 UWP 应用中浮出控件的高度和宽度

    我在 UWP 应用程序中使用 Flyout 元素
  • 在 vb.net 中打乱字符串数组

    我正在 vb net 中开发一个网页 它将向用户生成许多多项选择题 我需要对已经放入数组中的四个答案进行洗牌 假设我必须遵循以下数组 array Correct Wrong1 Wrong2 Wrong3 我尝试使用以下方法 Public S
  • Visual Studio 2012 最近的项目未在任务栏中更新

    我已将 Visual Studio 固定到任务栏 用鼠标右键单击该图标时 会显示最近的项目和解决方案的列表 这曾经工作正常 但从现在起 该列表不再更新 我总是在下面看到相同的项目和解决方案Recent 尽管我最近参与了较新的项目 我该如何修
  • 从 PowerShell 挂起或休眠

    我有兴趣使用 Windows PowerShell 挂起或休眠计算机 你如何实现这一目标 我已经知道Stop Computer and Restart Computercmdlet 它们是开箱即用的 但它们并没有实现我想要的功能 您可以使用
  • SqlCommand.Parameters.AddWithValue 到底做什么?

    有什么变化SqlCommand Parameters AddWithValue 与查询有关吗 我期望 它取代了每一个 字符由 如果参数值是字符串或必须转换为字符串的内容 则它将将该值括起来 例如select from A where B h
  • 连接字符串的 Powershell 正则表达式?

    由于某种原因 我在解析 web config 文件中的连接字符串时遇到了困难 我已经获得了 connectionString 但我正在尝试获取所有值 例如 数据源 初始目录 Username etc 连接字符串如下所示 数据源 db sam
  • 使用 WebClient 下载时获取原始文件名

    当 Uri 不包含名称时 有什么方法可以知道使用 WebClient 下载的文件的原始名称吗 例如 在下载源自预先未知名称的动态页面的网站中 就会发生这种情况 使用我的浏览器 该文件获得正确的名称 但是如何使用 WebClient 来完成此
  • ADO.NET - 获取数据读取器值的最佳实践是什么?

    只是想知道获取数据读取器值的最佳实践是什么 例如 我一直在这样做 MyValue Dr ColumnName 但注意到其他人在做 MyValue Dr GetString ColumnName 我很想知道第二种方法的好处 仅当您知道列的索引
  • PowerShell - 从 .csproj 文件获取版本

    我正在学习 PowerShell 现在 我正在努力获得Version csproj 文件中的元素值 csproj 文件的 XML 如下所示
  • 当 ObservableCollection 更改时重新评估 LINQ 查询

    我有一个常见问题 我希望 希望 找到更好的解决方案来继续前进 我有一个包含数据主列表的 ObservableCollection 在我的客户端代码中 我需要将数据 转换 为新的形式以显示给用户 我使用如下 LINQ 语句 var newLi
  • C# 2.0中使用HashSet,兼容3.5

    我真的很想在我的程序中使用哈希集 使用字典感觉很丑 有一天我可能会开始使用 VS2008 和 Net 3 5 所以我的理想是即使我不能 或者我可以 使用hashsets http msdn microsoft com en us libra
  • 在 Windows Server 2003 上安装 PHP 5 - %1 不是有效的 Win32 应用程序

    我正在尝试在带有 IIS 6 的 Windows Server 2003 环境上安装 PHP 5 安装 PHP 并在 IIS 中进行必要的更改后 出现以下错误 1 is not a valid Win32 application 服务器不是
  • Google 的“编码折线算法”的 C# 实现

    有谁有 Google 的简洁而强大的实现吗 编码折线算法 http code google com apis maps documentation utilities polylinealgorithm html in C 我本质上想要实现
  • 如何阻止 Powershell 坚持在参数中使用一个破折号?

    似乎有人巧妙地改变了在 powershell 上解析参数开关的方式 在某些机器上 split path c x y parent 有效 在某些情况下会失败 谁能告诉我a 是什么导致了差异 b 我怎样才能阻止它 开关参数在 V1 和 V2 中
  • 使用 QProcessEnvironment 更改 cmd.exe 的 PATH 环境变量

    我想从设置了特定路径的 Qt 应用程序启动 cmd exe 我在 QProcessEnvironment 中插入 Path 并将该环境设置为 QProcess 然后我开始分离 cmd 在命令提示符上 路径与调用应用程序的路径相同 而不是我刚
  • 国际象棋棋步验证库[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 NET 中是否有可用于验证国际象棋走法和模拟游戏的库 如果该库能够理解代数符号中的移动并提供简单的 A

随机推荐