2017-01-31 86 views
0

我正在虚拟机上通过Visual Studio Team Services运行一系列的Coded UI测试。问题是,很多测试都失败了,因为当某人没有主动远程访问时(总是在测试运行时)屏幕分辨率太低。尽管分辨率尽可能低(我敢肯定它的分辨率为800x600),但有些项目正在被其他项目截断,并且编码界面需要查找和点击的控件不能被点击,因为它们突然落后于其他项目控制。Powershell:在Windows 8虚拟机中设置屏幕分辨率

所以我正在寻找一种方法来设置虚拟机的默认屏幕分辨率为更大的东西,如1280x1024。

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

this article,有两个注册表设置,我需要编辑,我可以通过一个简单的调用Remove-ItemProperty /New-ItemProperty对功能做。它们是:

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

的问题是从文章这条线:

GUI D是随机生成的GUID。

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

回答

1

如果你只需要提取GUID字符串,可以运行:如果你需要远程获取来自虚拟机的GUID

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

,你可能需要考虑的.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]} } 
+0

这工作!我试图做的最终失败了,但使用这个我能够生成正确的注册表键,而不管GUID是什么。 –

+0

太好了,阿里。很高兴我能帮上忙 :) –