2017-01-31 114 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

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