diff --git a/CopyFilesToVM.ps1 b/CopyFilesToVM.ps1 index b0dd751..470c6fc 100644 --- a/CopyFilesToVM.ps1 +++ b/CopyFilesToVM.ps1 @@ -1,4 +1,41 @@ -Function Add-VMGpuPartitionAdapterFiles { +function add-gpo-modifications { +param( +[string]$DriveLetter +) + $querygpt = Get-content $DriveLetter\Windows\System32\GroupPolicy\gpt.ini + $matchgpt = $querygpt -match '{42B5FAAE-6536-11D2-AE5A-0000F87571E3}{40B6664F-4972-11D1-A7CA-0000F87571E3}' + if ($matchgpt -contains "*0000F87571E3*" -eq $false) { + $gptstring = get-content $DriveLetter\Windows\System32\GroupPolicy\gpt.ini + $gpoversion = $gptstring -match "Version" + $GPO = $gptstring -match "gPCMachineExtensionNames" + $add = '[{42B5FAAE-6536-11D2-AE5A-0000F87571E3}{40B6664F-4972-11D1-A7CA-0000F87571E3}]' + $replace = "$GPO" + "$add" + (Get-Content "$DriveLetter\Windows\System32\GroupPolicy\gpt.ini").Replace("$GPO","$replace") | Set-Content "$DriveLetter\Windows\System32\GroupPolicy\gpt.ini" + [int]$i = $gpoversion.trim("Version=") + [int]$n = $gpoversion.trim("Version=") + $n +=2 + (Get-Content $DriveLetter\Windows\System32\GroupPolicy\gpt.ini) -replace "Version=$i", "Version=$n" | Set-Content $DriveLetter\Windows\System32\GroupPolicy\gpt.ini + } + else{ + write-output "Not Required" + } + } + +Function Setup-ParsecInstall { +param( +[string]$DriveLetter +) + add-gpo-modifications -DriveLetter $DriveLetter + if((Test-Path -Path $DriveLetter\Windows\system32\GroupPolicy\Machine\Scripts\Startup) -eq $true) {} Else {New-Item -Path $DriveLetter\Windows\system32\GroupPolicy\Machine\Scripts\Startup -ItemType directory | Out-Null} + if((Test-Path -Path $DriveLetter\Windows\system32\GroupPolicy\Machine\Scripts\Shutdown) -eq $true) {} Else {New-Item -Path $DriveLetter\Windows\system32\GroupPolicy\Machine\Scripts\Shutdown -ItemType directory | Out-Null} + if((Test-Path -Path $DriveLetter\ProgramData\Easy-GPU-P) -eq $true) {} Else {New-Item -Path $DriveLetter\Windows\system32\GroupPolicy\Machine\Scripts\Easy-GPU-P -ItemType directory | Out-Null} + Move-Item -Path $psscriptroot\psscripts.ini -Destination $DriveLetter\Windows\system32\GroupPolicy\Machine\Scripts + Move-Item -Path $psscriptroot\Install.ps1 -Destination $DriveLetter\Windows\system32\GroupPolicy\Machine\Scripts\Startup + Move-Item -Path $psscriptroot\parsecpublic.cer -Destination $DriveLetter\ProgramData\Easy-GPU-P +} + + +Function Add-VMGpuPartitionAdapterFiles { param( [string]$hostname = $ENV:COMPUTERNAME, [string]$DriveLetter, diff --git a/Install.ps1 b/Install.ps1 new file mode 100644 index 0000000..769c6a5 --- /dev/null +++ b/Install.ps1 @@ -0,0 +1,19 @@ +while(!(Test-NetConnection Google.com).PingSucceeded){ + Start-Sleep -Seconds 1 + } + +if (Test-Path HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Parsec) + {} + else { + (New-Object System.Net.WebClient).DownloadFile("https://builds.parsecgaming.com/package/parsec-windows.exe", "C:\Users\$env:USERNAME\Downloads\parsec-windows.exe") + (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") + Start-Process "C:\Users\$env:USERNAME\Downloads\parsec-windows.exe" -ArgumentList "/silent", "/shared" -wait + Import-Certificate -CertStoreLocation Cert:\LocalMachine\TrustedPublisher -FilePath "C:\ProgramData\Easy-GPU-P\parsecpublic.cer" | Out-Null + Start-Process "C:\Users\$env:USERNAME\Downloads\parsec-vdd.exe" -ArgumentList "/silent" -wait + $configfile = Get-Content C:\ProgramData\Parsec\config.txt + $configfile += "host_virtual_monitors = 1" + $configfile += "host_privacy_mode = 1" + $configfile | Out-File C:\ProgramData\Parsec\config.txt -Encoding ascii + Stop-Process Parsec -Force + } + diff --git a/gpt.ini b/gpt.ini new file mode 100644 index 0000000..4e41c3c --- /dev/null +++ b/gpt.ini @@ -0,0 +1,3 @@ +[General] +gPCMachineExtensionNames=[{42B5FAAE-6536-11D2-AE5A-0000F87571E3}{40B6664F-4972-11D1-A7CA-0000F87571E3}] +Version=4 \ No newline at end of file diff --git a/parsecpublic.cer b/parsecpublic.cer new file mode 100644 index 0000000..dfc68ab Binary files /dev/null and b/parsecpublic.cer differ diff --git a/psscripts.ini b/psscripts.ini new file mode 100644 index 0000000..25e56e3 --- /dev/null +++ b/psscripts.ini @@ -0,0 +1,4 @@ + +[Startup] +0CmdLine=c:\Windows\system32\GroupPolicy\Machine\Scripts\Startup\Install.ps1 +0Parameters= \ No newline at end of file