diff --git a/README.md b/README.md new file mode 100644 index 0000000..c29a3c8 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# How to run +Change PCIe paths in file +Execute switchGPU.ps1 in powershell diff --git a/disableigpu.ps1 b/disableigpu.ps1 index 9e75d05..411f7cb 100644 --- a/disableigpu.ps1 +++ b/disableigpu.ps1 @@ -1,2 +1,2 @@ -if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs; exit } +if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs; exit } pnputil /disable-device "PCI\VEN_1002&DEV_1681&SUBSYS_380117AA&REV_C1\4&33381BD1&0&0041" #disable iGPU \ No newline at end of file diff --git a/enableigpu.ps1 b/enableigpu.ps1 index facccc1..2cb0452 100644 --- a/enableigpu.ps1 +++ b/enableigpu.ps1 @@ -1,2 +1,2 @@ -if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs; exit } +if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs; exit } pnputil /enable-device "PCI\VEN_1002&DEV_1681&SUBSYS_380117AA&REV_C1\4&33381BD1&0&0041" #enable iGPU \ No newline at end of file diff --git a/switchGPU.ps1 b/switchGPU.ps1 index 83bae9e..5f9b683 100644 --- a/switchGPU.ps1 +++ b/switchGPU.ps1 @@ -1,57 +1,57 @@ -param([String]$working=$pwd, [String]$desktop = [Environment]::GetFolderPath("Desktop")) -$folderPath = "C:\.gpu" -$gpuTask = Join-Path $working GPU.xml -if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`" -working $pwd -desktop $desktop" -Verb RunAs; exit } - -$scriptOld = Join-Path $working "*" -$linkEnableOrig = Join-Path $folderPath "enableigpu.ps1" -$linkEnableDesk = Join-Path $desktop "Enable-iGPU" -$linkDisableOrig = Join-Path $folderPath "disableigpu.ps1" -$linkDisableDesk = Join-Path $desktop "Disable-iGPU" -Write-Output "Testing if files exist" -if(-Not (Test-Path $folderPath)){ - Write-Output "Creating Directory $folderPath" - New-Item $folderPath -Type Directory - attrib +h $folderPath - Copy-Item $scriptOld $folderPath - - New-Item -ItemType SymbolicLink -Path $linkEnableDesk -Target $linkEnableOrig - New-Item -ItemType SymbolicLink -Path $linkDisableDesk -Target $linkDisableOrig -} - - -Write-Output "Checking if task already exists" -if(Get-ScheduledTask | Where-Object{$_.TaskName -eq "GPU"}) -{ - Write-Output "Task exists" -}else -{ - Register-ScheduledTask -TaskName "GPU" -Xml (Get-Content $gpuTask | Out-String) -} - - -Write-Output "Waiting 5 Seconds" -Start-Sleep 5 -if(Get-PnpDevice | Where-Object{$_.InstanceId -eq "PCI\VEN_10DE&DEV_1B80&SUBSYS_85AA1043&REV_A1\6&5c8cf2c&0&00080019"} | Where-Object{$_.Status -eq "OK"}) -{ - Write-Output "dGPU plugged in" - if(Get-PnpDevice | Where-Object{$_.InstanceId -eq "PCI\VEN_1002&DEV_1681&SUBSYS_380117AA&REV_C1\4&33381BD1&0&0041"} | Where-Object{$_.Status -eq "OK"}) - { - Write-Output "Disabling iGPU" - pnputil /disable-device "PCI\VEN_1002&DEV_1681&SUBSYS_380117AA&REV_C1\4&33381BD1&0&0041" #disable iGPU - }else - { - Write-Output "iGPU already disabled" - } -}else -{ - Write-Output "dGPU not plugged in" - if(Get-PnpDevice | Where-Object{$_.InstanceId -eq "PCI\VEN_1002&DEV_1681&SUBSYS_380117AA&REV_C1\4&33381BD1&0&0041"} | Where-Object{$_.Status -eq "OK"}) - { - Write-Output "iGPU already enabled" - }else - { - Write-Output "Enabling iGPU" - pnputil /enable-device "PCI\VEN_1002&DEV_1681&SUBSYS_380117AA&REV_C1\4&33381BD1&0&0041" #enable iGPU - } -} +param([String]$working=$pwd, [String]$desktop = [Environment]::GetFolderPath("Desktop")) +$folderPath = "C:\.gpu" +$gpuTask = Join-Path $working GPU.xml +if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`" -working $pwd -desktop $desktop" -Verb RunAs; exit } + +$scriptOld = Join-Path $working "*" +$linkEnableOrig = Join-Path $folderPath "enableigpu.ps1" +$linkEnableDesk = Join-Path $desktop "Enable-iGPU" +$linkDisableOrig = Join-Path $folderPath "disableigpu.ps1" +$linkDisableDesk = Join-Path $desktop "Disable-iGPU" +Write-Output "Testing if files exist" +if(-Not (Test-Path $folderPath)){ + Write-Output "Creating Directory $folderPath" + New-Item $folderPath -Type Directory + attrib +h $folderPath + Copy-Item $scriptOld $folderPath + + New-Item -ItemType SymbolicLink -Path $linkEnableDesk -Target $linkEnableOrig + New-Item -ItemType SymbolicLink -Path $linkDisableDesk -Target $linkDisableOrig +} + + +Write-Output "Checking if task already exists" +if(Get-ScheduledTask | Where-Object{$_.TaskName -eq "GPU"}) +{ + Write-Output "Task exists" +}else +{ + Register-ScheduledTask -TaskName "GPU" -Xml (Get-Content $gpuTask | Out-String) +} + + +Write-Output "Waiting 5 Seconds" +Start-Sleep 5 +if(Get-PnpDevice | Where-Object{$_.InstanceId -eq "PCI\VEN_10DE&DEV_1B80&SUBSYS_85AA1043&REV_A1\6&5c8cf2c&0&00080019"} | Where-Object{$_.Status -eq "OK"}) +{ + Write-Output "dGPU plugged in" + if(Get-PnpDevice | Where-Object{$_.InstanceId -eq "PCI\VEN_1002&DEV_1681&SUBSYS_380117AA&REV_C1\4&33381BD1&0&0041"} | Where-Object{$_.Status -eq "OK"}) + { + Write-Output "Disabling iGPU" + pnputil /disable-device "PCI\VEN_1002&DEV_1681&SUBSYS_380117AA&REV_C1\4&33381BD1&0&0041" #disable iGPU + }else + { + Write-Output "iGPU already disabled" + } +}else +{ + Write-Output "dGPU not plugged in" + if(Get-PnpDevice | Where-Object{$_.InstanceId -eq "PCI\VEN_1002&DEV_1681&SUBSYS_380117AA&REV_C1\4&33381BD1&0&0041"} | Where-Object{$_.Status -eq "OK"}) + { + Write-Output "iGPU already enabled" + }else + { + Write-Output "Enabling iGPU" + pnputil /enable-device "PCI\VEN_1002&DEV_1681&SUBSYS_380117AA&REV_C1\4&33381BD1&0&0041" #enable iGPU + } +}