【问题标题】:Powershell: Setting the screen resolution in a Windows 8 VMPowershell:在 Windows 8 VM 中设置屏幕分辨率
【发布时间】:2017-02-01 04:45:12
【问题描述】:

我正在通过 Visual Studio Team Services 在 VM 上运行一系列编码 UI 测试。问题是,很多测试都失败了,因为当有人没有主动远程时屏幕分辨率太低(在测试运行时总是如此)。分辨率尽可能低(我很确定它是 800x600),一些项目被其他项目截断,并且编码 UI 需要查找和单击的控件无法单击,因为它们突然落后于其他控制。

所以我正在寻找一种方法来将 VM 的默认屏幕分辨率设置为更大的值,例如 1280x1024。

到目前为止,我遇到了两种技术。一个是涉及混合 C# 和 Powershell 语法的相当大的脚本。这可能可行,但另一种方法似乎更简单:编辑注册表以设置默认屏幕分辨率。这种方法对我来说效果稍好一些,因为我不必将全新的 Powershell 文件添加到发布定义中(我会为大型脚本执行此操作);相反,我可以在已经运行的现有脚本中添加两行。

根据this article,我需要编辑两个注册表设置,我可以通过简单调用Remove-ItemProperty/New-ItemProperty 函数对来完成。它们是:

  • HKLM\System\CurrentControlSet\Control\Video\GUID\0000\DefaultSettings.XResolution
  • HKLM\System\CurrentControlSet\Control\Video\GUID\0000\DefaultSettings.YResolution

问题是文章中的这一行:

其中 GUID 是随机生成的 GUID。

所以问题是,有没有办法知道这些键中使用的 GUID?或者在 Powershell 中有什么方法可以获取它们或获取整个密钥并解析 GUID?

【问题讨论】:

    标签: windows powershell azure


    【解决方案1】:

    如果你只需要提取 GUID 字符串,你可以运行这个:

    Get-ChildItem -Path "HKLM:\System\CurrentControlSet\Control\Video" | % Name | ForEach-Object {$_.split("\")[5]}
    

    如果您需要从虚拟机远程获取 GUID,您可能需要查看 .NET Microsoft.Win32.RegistryKey 或 WMI StdRegprov 类的使用情况。

    或者,如果启用了 PowerShell 远程处理:

    Invoke-Command -ComputerName $Computer -ScriptBlock {Get-ChildItem -Path "HKLM:\System\CurrentControlSet\Control\Video" | % Name | ForEach-Object {$_.split("\")[5]} }
    

    【讨论】:

    • 成功了!我试图做的事情最终失败了,但使用它我能够生成正确的注册表项,而不管 GUID 是什么。
    • 太棒了,阿里。很高兴我能帮忙:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    相关资源
    最近更新 更多