├── 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 | ![HYPER2](https://user-images.githubusercontent.com/96527590/161138872-a7458bc3-2f4b-4b69-96dd-26b4e9be9c64.jpg) 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</PlainText> 136 | </Password> 137 | <Enabled>true</Enabled> 138 | <Username>test</Username> 139 | </AutoLogon> 140 | <OOBE> 141 | <HideEULAPage>true</HideEULAPage> 142 | <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen> 143 | <HideOnlineAccountScreens>true</HideOnlineAccountScreens> 144 | <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> 145 | <NetworkLocation>Home</NetworkLocation> 146 | <SkipUserOOBE>true</SkipUserOOBE> 147 | <SkipMachineOOBE>true</SkipMachineOOBE> 148 | <ProtectYourPC>1</ProtectYourPC> 149 | </OOBE> 150 | <Display> 151 | <ColorDepth>32</ColorDepth> 152 | <HorizontalResolution>1920</HorizontalResolution> 153 | <RefreshRate>60</RefreshRate> 154 | <VerticalResolution>1080</VerticalResolution> 155 | </Display> 156 | <UserAccounts> 157 | <LocalAccounts> 158 | <LocalAccount wcm:action="add"> 159 | <Password> 160 | <Value>test</Value> 161 | <PlainText>true</PlainText> 162 | </Password> 163 | <Description> 164 | </Description> 165 | <DisplayName>test</DisplayName> 166 | <Group>Administrators</Group> 167 | <Name>test</Name> 168 | </LocalAccount> 169 | </LocalAccounts> 170 | </UserAccounts> 171 | <RegisteredOrganization> 172 | </RegisteredOrganization> 173 | <RegisteredOwner>GPU-P</RegisteredOwner> 174 | <DisableAutoDaylightTimeSet>false</DisableAutoDaylightTimeSet> 175 | <FirstLogonCommands> 176 | <SynchronousCommand wcm:action="add"> 177 | <Description>Allow Scripts</Description> 178 | <Order>1</Order> 179 | <CommandLine>reg add HKLM\Software\Policies\Microsoft\Windows\Powershell</CommandLine> 180 | <RequiresUserInput>false</RequiresUserInput> 181 | </SynchronousCommand> 182 | <SynchronousCommand wcm:action="add"> 183 | <Description>Allow Scripts</Description> 184 | <Order>2</Order> 185 | <CommandLine>reg add HKLM\Software\Policies\Microsoft\Windows\Powershell /v ExecutionPolicy /t REG_SZ /d Unrestricted</CommandLine> 186 | <RequiresUserInput>false</RequiresUserInput> 187 | </SynchronousCommand> 188 | <SynchronousCommand wcm:action="add"> 189 | <Description>Allow Scripts</Description> 190 | <Order>3</Order> 191 | <CommandLine>reg add HKLM\Software\Policies\Microsoft\Windows\Powershell /v EnableScripts /t REG_DWORD /d 1</CommandLine> 192 | <RequiresUserInput>false</RequiresUserInput> 193 | </SynchronousCommand> 194 | <SynchronousCommand wcm:action="add"> 195 | <Order>4</Order> 196 | <RequiresUserInput>false</RequiresUserInput> 197 | <CommandLine>cmd /C wmic useraccount where name="GPU-P" set PasswordExpires=false</CommandLine> 198 | <Description>Password Never Expires</Description> 199 | </SynchronousCommand> 200 | </FirstLogonCommands> 201 | <TimeZone>GTB Standard Time</TimeZone> 202 | </component> 203 | </settings> 204 | </unattend> --------------------------------------------------------------------------------