├── H.ico
├── Machine
├── psscripts.ini
└── Install.ps1
├── HYPERMENU.exe
├── User
├── psscripts.ini
└── Install.ps1
├── VMScripts
├── Parsec.lnk
├── ParsecPublic.cer
├── VDDMonitor.ps1
├── ParsecVDDInstall.ps1
└── VBCableInstall.ps1
├── gpt.ini
├── ISO
└── README.txt
├── README.md
└── autounattend.xml
/H.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CodyCloudSrls/HYPERMENU/HEAD/H.ico
--------------------------------------------------------------------------------
/Machine/psscripts.ini:
--------------------------------------------------------------------------------
1 |
2 | [Startup]
3 | 0CmdLine=Install.ps1
4 | 0Parameters=
--------------------------------------------------------------------------------
/HYPERMENU.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CodyCloudSrls/HYPERMENU/HEAD/HYPERMENU.exe
--------------------------------------------------------------------------------
/User/psscripts.ini:
--------------------------------------------------------------------------------
1 |
2 | [Logon]
3 | 0CmdLine=Install.ps1
4 | 0Parameters=-team_id= -team_key=
5 |
--------------------------------------------------------------------------------
/VMScripts/Parsec.lnk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CodyCloudSrls/HYPERMENU/HEAD/VMScripts/Parsec.lnk
--------------------------------------------------------------------------------
/VMScripts/ParsecPublic.cer:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CodyCloudSrls/HYPERMENU/HEAD/VMScripts/ParsecPublic.cer
--------------------------------------------------------------------------------
/gpt.ini:
--------------------------------------------------------------------------------
1 | [General]
2 | gPCUserExtensionNames=[{42B5FAAE-6536-11D2-AE5A-0000F87571E3}{40B66650-4972-11D1-A7CA-0000F87571E3}]
3 | Version=131074
4 | gPCMachineExtensionNames=[{42B5FAAE-6536-11D2-AE5A-0000F87571E3}{40B6664F-4972-11D1-A7CA-0000F87571E3}]
--------------------------------------------------------------------------------
/VMScripts/VDDMonitor.ps1:
--------------------------------------------------------------------------------
1 | $Global:VDD
2 |
3 | Function GetVDDState {
4 | $Global:VDD = Get-PnpDevice | where {$_.friendlyname -like "Parsec Virtual Display Adapter"}
5 | }
6 |
7 | While (1 -gt 0) {
8 | GetVDDSTate
9 | If ($Global:VDD -eq $NULL){
10 | Exit
11 | }
12 | Do {
13 | Enable-PnpDevice -InstanceId $Global:VDD.InstanceId -Confirm:$false
14 | Start-Sleep -s 5
15 | GetVDDState
16 | }
17 | Until ($Global:VDD.Status -eq 'OK')
18 | Start-Sleep -s 10
19 | }
20 |
--------------------------------------------------------------------------------
/ISO/README.txt:
--------------------------------------------------------------------------------
1 | PUT THE ISO HERE FOR GPU-P
2 | FOR WINDOWS 10 or 11 CALL IT "WIN.ISO"
3 |
4 |
5 | AFTER THE COPY YOU CAN SAFELY OPEN "HYPERMENU" ON YOUR DESKTOP OR START-MENU
6 |
7 | ## Features:
8 | 1. Creates a new vm with gpu-p, drivers and parsec using hyper-v
9 | 2. Adds Gpu-p to an existing vm, including drivers
10 | 3. Updates a gpu-p vm drivers
11 | 4. Run the PreChecks script
12 | 5. Remove gpu-p adapter from vm
13 | 6. Print A List Of Available GPUS In Your System (Even On Laptops Yea)
14 | 7. Add/Remove Nested Hyper-V
15 | 8. DDA Device Print
16 | And more to come!!
17 |
18 | For GPU-P You can find the original source at: https://github.com/jamesstringerparsec/Easy-GPU-PV
19 |
20 | All Credits to @jamesstringerparsec
21 |
--------------------------------------------------------------------------------
/VMScripts/ParsecVDDInstall.ps1:
--------------------------------------------------------------------------------
1 | if (!(Get-WmiObject Win32_VideoController | Where-Object name -like "Parsec Virtual Display Adapter")) {
2 | (New-Object System.Net.WebClient).DownloadFile("https://builds.parsec.app/vdd/parsec-vdd-0.37.0.0.exe", "C:\Users\$env:USERNAME\Downloads\parsec-vdd.exe")
3 | while (((Get-ChildItem Cert:\LocalMachine\TrustedPublisher) | Where-Object {$_.Subject -like '*Parsec*'}) -eq $NULL) {
4 | certutil -Enterprise -Addstore "TrustedPublisher" C:\ProgramData\Easy-GPU-P\ParsecPublic.cer
5 | Start-Sleep -s 5
6 | }
7 | Get-PnpDevice | Where-Object {$_.friendlyname -like "Microsoft Hyper-V Video" -and $_.status -eq "OK"} | Disable-PnpDevice -confirm:$false
8 | Start-Process "C:\Users\$env:USERNAME\Downloads\parsec-vdd.exe" -ArgumentList "/s"
9 | }
10 |
11 |
--------------------------------------------------------------------------------
/Machine/Install.ps1:
--------------------------------------------------------------------------------
1 | <#
2 | if (!(Test-Path C:\ProgramData\Easy-GPU-P\second.txt)) {
3 | exit
4 | }
5 | else {
6 | if( !((Get-ChildItem -Path Cert:\CurrentUser\TrustedPublisher).DnsNameList.Unicode -like "Parsec Cloud, Inc.")) {
7 | $Success = $false
8 | [int]$Retries = 0
9 | do {
10 | try {
11 | Import-Certificate -CertStoreLocation Cert:\CurrentUser\TrustedPublisher -FilePath C:\ProgramData\Easy-GPU-P\parsecpublic.cer
12 | $Success = $true
13 | }
14 | catch {
15 | if ($Retries -gt 60){
16 | $Success = $true
17 | }
18 | else {
19 | Start-Sleep -Seconds 1
20 | $Error[0] |Out-File C:\ProgramData\Easy-GPU-P\log.txt
21 | $env:USERNAME | Out-File C:\ProgramData\Easy-GPU-P\username.txt
22 | $Retries++
23 |
24 | }
25 | }
26 | }
27 | While ($Success -eq $false)
28 |
29 | }
30 | Else {
31 | }
32 | }
33 | #>
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # UPDATE!
2 | EASY-GPUP-MENU is now HYPEMENU with more features, more stability and even an installer for more semplicity!
3 |
4 | # HYPERMENU, the only!
5 | A simple menu for those that need a simple and quick access to Hyper-V CLI settings.
6 |
7 | ## Guide:
8 | 1. Download the menu from this link: https://github.com/codygamer666/HYPERMENU/releases
9 | 2. Drop the Win10/11 ISO in the iso folder and rename it WIN.iso
10 | 3. Run HYPERMENU and follow the options
11 | ## Features:
12 | 1. Creates a new vm with gpu-p, drivers and parsec using hyper-v
13 | 2. Adds Gpu-p to an existing vm, including drivers
14 | 3. Updates a gpu-p vm drivers
15 | 4. Run the PreChecks script
16 | 5. Remove gpu-p adapter from vm
17 | 6. Print a list of available GPUS in your system (Even On Laptops Yea)
18 | 7. Add and remove Vlans to Nested Vms
19 | 8. Nested Virtualization
20 |
21 | You can find the original Repo at: https://github.com/jamesstringerparsec/Easy-GPU-PV
22 |
23 | All Credits to @jamesstringerparsec
24 |
25 |
26 | 
27 |
--------------------------------------------------------------------------------
/VMScripts/VBCableInstall.ps1:
--------------------------------------------------------------------------------
1 | if (!(Get-WmiObject Win32_SoundDevice | Where-Object name -like "VB-Audio Virtual Cable")) {
2 | (New-Object System.Net.WebClient).DownloadFile("https://download.vb-audio.com/Download_CABLE/VBCABLE_Driver_Pack43.zip", "C:\Users\$env:USERNAME\Downloads\VBCable.zip")
3 | New-Item -Path "C:\Users\$env:Username\Downloads\VBCable" -ItemType Directory| Out-Null
4 | Expand-Archive -Path "C:\Users\$env:USERNAME\Downloads\VBCable.zip" -DestinationPath "C:\Users\$env:USERNAME\Downloads\VBCable"
5 | $pathToCatFile = "C:\Users\$env:USERNAME\Downloads\VBCable\vbaudio_cable64_win7.cat"
6 | $FullCertificateExportPath = "C:\Users\$env:USERNAME\Downloads\VBCable\VBCert.cer"
7 | $VB = @{}
8 | $VB.DriverFile = $pathToCatFile;
9 | $VB.CertName = $FullCertificateExportPath;
10 | $VB.ExportType = [System.Security.Cryptography.X509Certificates.X509ContentType]::Cert;
11 | $VB.Cert = (Get-AuthenticodeSignature -filepath $VB.DriverFile).SignerCertificate;
12 | [System.IO.File]::WriteAllBytes($VB.CertName, $VB.Cert.Export($VB.ExportType))
13 | while (((Get-ChildItem Cert:\LocalMachine\TrustedPublisher) | Where-Object {$_.Subject -like '*Vincent Burel*'}) -eq $NULL) {
14 | certutil -Enterprise -Addstore "TrustedPublisher" $VB.CertName
15 | Start-Sleep -s 5
16 | }
17 | Start-Process -FilePath "C:\Users\$env:Username\Downloads\VBCable\VBCABLE_Setup_x64.exe" -ArgumentList '-i','-h'
18 | }
19 |
--------------------------------------------------------------------------------
/User/Install.ps1:
--------------------------------------------------------------------------------
1 |
2 | param(
3 | $team_id,
4 | $key
5 | )
6 |
7 | while(!(Test-NetConnection Google.com).PingSucceeded){
8 | Start-Sleep -Seconds 1
9 | }
10 |
11 | Get-ChildItem -Path C:\ProgramData\Easy-GPU-P -Recurse | Unblock-File
12 |
13 | if (Test-Path HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Parsec)
14 | {}
15 | else {
16 | (New-Object System.Net.WebClient).DownloadFile("https://builds.parsecgaming.com/package/parsec-windows.exe", "C:\Users\$env:USERNAME\Downloads\parsec-windows.exe")
17 | Start-Process "C:\Users\$env:USERNAME\Downloads\parsec-windows.exe" -ArgumentList "/silent", "/shared","/team_id=$team_id","/team_computer_key=$key" -wait
18 | While (!(Test-Path C:\ProgramData\Parsec\config.txt)){
19 | Start-Sleep -s 1
20 | }
21 | $configfile = Get-Content C:\ProgramData\Parsec\config.txt
22 | $configfile += "host_virtual_monitors = 1"
23 | $configfile += "host_privacy_mode = 1"
24 | $configfile | Out-File C:\ProgramData\Parsec\config.txt -Encoding ascii
25 | Copy-Item -Path "C:\ProgramData\Easy-GPU-P\Parsec.lnk" -Destination "C:\Users\Public\Desktop"
26 | Stop-Process parsecd -Force
27 | }
28 |
29 | Function ParsecVDDMonitorSetupScheduledTask {
30 | $XML = @"
31 |
32 |
33 |
34 | Monitors the state of Parsec Virtual Display and repairs if broken
35 | \Monitor Parsec VDD State
36 |
37 |
38 |
39 | true
40 | $(([System.Security.Principal.WindowsIdentity]::GetCurrent()).Name)
41 | PT2M
42 |
43 |
44 |
45 |
46 | $(([System.Security.Principal.WindowsIdentity]::GetCurrent()).User.Value)
47 | S4U
48 | HighestAvailable
49 |
50 |
51 |
52 | IgnoreNew
53 | true
54 | true
55 | true
56 | false
57 | false
58 |
59 | true
60 | false
61 |
62 | true
63 | true
64 | false
65 | false
66 | false
67 | PT72H
68 | 7
69 |
70 |
71 |
72 | C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe
73 | -file %programdata%\Easy-GPU-P\VDDMonitor.ps1
74 |
75 |
76 |
77 | "@
78 |
79 | try {
80 | Get-ScheduledTask -TaskName "Monitor Parsec VDD State" -ErrorAction Stop | Out-Null
81 | Unregister-ScheduledTask -TaskName "Monitor Parsec VDD State" -Confirm:$false
82 | }
83 | catch {}
84 | $action = New-ScheduledTaskAction -Execute 'C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe' -Argument '-file %programdata%\Easy-GPU-P\VDDMonitor.ps1'
85 | $trigger = New-ScheduledTaskTrigger -AtStartup
86 | Register-ScheduledTask -XML $XML -TaskName "Monitor Parsec VDD State" | Out-Null
87 | }
88 | Function VBCableInstallSetupScheduledTask {
89 | $XML = @"
90 |
91 |
92 |
93 | Install VB Cable
94 | \Install VB Cable
95 |
96 |
97 |
98 | true
99 | $(([System.Security.Principal.WindowsIdentity]::GetCurrent()).Name)
100 | PT2M
101 |
102 |
103 |
104 |
105 | $(([System.Security.Principal.WindowsIdentity]::GetCurrent()).User.Value)
106 | S4U
107 | HighestAvailable
108 |
109 |
110 |
111 | IgnoreNew
112 | true
113 | true
114 | true
115 | false
116 | false
117 |
118 | true
119 | false
120 |
121 | true
122 | true
123 | false
124 | false
125 | false
126 | PT72H
127 | 7
128 |
129 |
130 |
131 | C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe
132 | -file %programdata%\Easy-GPU-P\VBCableInstall.ps1
133 |
134 |
135 |
136 | "@
137 |
138 | try {
139 | Get-ScheduledTask -TaskName "Install VB Cable" -ErrorAction Stop | Out-Null
140 | Unregister-ScheduledTask -TaskName "Install VB Cable" -Confirm:$false
141 | }
142 | catch {}
143 | $action = New-ScheduledTaskAction -Execute 'C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe' -Argument '-file %programdata%\Easy-GPU-P\VBCableInstall.ps1'
144 | $trigger = New-ScheduledTaskTrigger -AtStartup
145 | Register-ScheduledTask -XML $XML -TaskName "Install VB Cable" | Out-Null
146 | }
147 | Function ParsecVDDInstallSetupScheduledTask {
148 | $XML = @"
149 |
150 |
151 |
152 | Install Parsec Virtual Display Driver
153 | \Install Parsec Virtual Display Driver
154 |
155 |
156 |
157 | true
158 | $(([System.Security.Principal.WindowsIdentity]::GetCurrent()).Name)
159 | PT2M
160 |
161 |
162 |
163 |
164 | $(([System.Security.Principal.WindowsIdentity]::GetCurrent()).User.Value)
165 | S4U
166 | HighestAvailable
167 |
168 |
169 |
170 | IgnoreNew
171 | true
172 | true
173 | true
174 | false
175 | false
176 |
177 | true
178 | false
179 |
180 | true
181 | true
182 | false
183 | false
184 | false
185 | PT72H
186 | 7
187 |
188 |
189 |
190 | C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe
191 | -file %programdata%\Easy-GPU-P\ParsecVDDInstall.ps1
192 |
193 |
194 |
195 | "@
196 |
197 | try {
198 | Get-ScheduledTask -TaskName "Install Parsec Virtual Display Driver" -ErrorAction Stop | Out-Null
199 | Unregister-ScheduledTask -TaskName "Install Parsec Virtual Display Driver" -Confirm:$false
200 | }
201 | catch {}
202 | $action = New-ScheduledTaskAction -Execute 'C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe' -Argument '-file %programdata%\Easy-GPU-P\ParsecVDDInstall.ps1'
203 | $trigger = New-ScheduledTaskTrigger -AtStartup
204 | Register-ScheduledTask -XML $XML -TaskName "Install Parsec Virtual Display Driver" | Out-Null
205 | }
206 |
207 | ParsecVDDMonitorSetupScheduledTask
208 | VBCableInstallSetupScheduledTask
209 | ParsecVDDInstallSetupScheduledTask
210 |
211 | Start-ScheduledTask -TaskName "Install VB Cable"
212 | Start-ScheduledTask -TaskName "Install Parsec Virtual Display Driver"
213 | Start-ScheduledTask -TaskName "Monitor Parsec VDD State"
--------------------------------------------------------------------------------
/autounattend.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | en-US
7 |
8 | 0409:00000409
9 | en-US
10 | en-US
11 | en-US
12 | en-AU
13 |
14 |
15 |
16 |
17 | 0
18 | true
19 |
20 |
21 |
22 | 1
23 | Primary
24 | 300
25 |
26 |
27 |
28 | 2
29 | EFI
30 | 100
31 |
32 |
33 |
34 | 3
35 | MSR
36 | 128
37 |
38 |
39 |
40 | 4
41 | Primary
42 | true
43 |
44 |
45 |
46 |
47 |
48 | 1
49 | 1
50 |
51 | NTFS
52 | DE94BBA4-06D1-4D40-A16A-BFD50179D6AC
53 |
54 |
55 |
56 | 2
57 | 2
58 |
59 | FAT32
60 |
61 |
62 |
63 | 3
64 | 3
65 |
66 |
67 |
68 | 4
69 | 4
70 |
71 | C
72 | NTFS
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 | 0
81 | 4
82 |
83 | false
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 | Never
93 |
94 | true
95 | GPU-P
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 | true
104 |
105 |
106 |
107 |
108 | 1
109 |
110 |
111 |
112 |
113 | 0409:00000409
114 | en-AU
115 | en-AU
116 | en-AU
117 | en-AU
118 |
119 |
120 | true
121 |
122 |
123 | 0
124 |
125 |
126 | test123
127 | W269N-WFGWX-YVC9B-4J6C9-T83GX
128 |
129 |
130 |
131 |
132 |
133 |
134 | test
135 | true
136 |
137 | true
138 | test
139 |
140 |
141 | true
142 | true
143 | true
144 | true
145 | Home
146 | true
147 | true
148 | 1
149 |
150 |
151 | 32
152 | 1920
153 | 60
154 | 1080
155 |
156 |
157 |
158 |
159 |
160 | test
161 | true
162 |
163 |
164 |
165 | test
166 | Administrators
167 | test
168 |
169 |
170 |
171 |
172 |
173 | GPU-P
174 | false
175 |
176 |
177 | Allow Scripts
178 | 1
179 | reg add HKLM\Software\Policies\Microsoft\Windows\Powershell
180 | false
181 |
182 |
183 | Allow Scripts
184 | 2
185 | reg add HKLM\Software\Policies\Microsoft\Windows\Powershell /v ExecutionPolicy /t REG_SZ /d Unrestricted
186 | false
187 |
188 |
189 | Allow Scripts
190 | 3
191 | reg add HKLM\Software\Policies\Microsoft\Windows\Powershell /v EnableScripts /t REG_DWORD /d 1
192 | false
193 |
194 |
195 | 4
196 | false
197 | cmd /C wmic useraccount where name="GPU-P" set PasswordExpires=false
198 | Password Never Expires
199 |
200 |
201 | GTB Standard Time
202 |
203 |
204 |
--------------------------------------------------------------------------------