Powershell:在Windows 8 VM中设置屏幕分辨率

时间:2017-01-31 18:46:45

标签: windows powershell azure

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

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

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

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

  • HKLM \系统\ CurrentControlSet \控制\视频\ GUID \ 0000 \ DefaultSettings.XResolution
  • HKLM \系统\ CurrentControlSet \控制\视频\ GUID \ 0000 \ DefaultSettings.YResolution

问题在于文章中的这一行:

  

其中 GUID 是随机生成的GUID。

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

1 个答案:

答案 0 :(得分:1)

如果您只需要提取GUID字符串,则可以运行:

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

如果您需要远程从VM获取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]} }