#Formålet med dette script er at oprette de nødvendige filer til at hurtigt og nemt slå DPI til og fra. #Oprettet den 23-04-2019 ################################ opretter nye filer ############################################################### #Opretter de nødvendige filer i C:\DPI New-Item -Path c:\ -Name DPI -ItemType Directory -Force New-Item -Path c:\DPI -Name Autojustere -ItemType Directory -Force New-Item -Path c:\DPI\Autojustere -Name DPI_scaling_on.ps1 -ItemType File -Force New-Item -Path c:\DPI\Autojustere -Name DPI_scaling_off.ps1 -ItemType File -Force New-Item -Path c:\DPI\Autojustere -Name LauncherON.cmd -ItemType File -Force New-Item -Path c:\DPI\Autojustere -Name LauncherOFF.cmd -ItemType File -Force ################################ giver de nye filer indhold ####################################################### #sætter Content for de ny oprettet filer #sætter content for Launchers Set-Content -Path c:\DPI\Autojustere\LauncherON.cmd -Value "powershell.exe -ExecutionPolicy Bypass -file c:\DPI\Autojustere\DPI_scaling_on.ps1" Set-Content -Path c:\DPI\Autojustere\LauncherOFF.cmd -Value "powershell.exe -ExecutionPolicy Bypass -file c:\DPI\Autojustere\DPI_scaling_off.ps1" #Sætter content for Powershell scripts on - off #onps1 indeholder den brødtekst der er skal skrives til DPI_scaling_on.ps1 $onps1 = @' #Dette script er blevet lave til at justere DPI scaling for Remote sessions #Skrevet den 09-04-2019 #Skrevet af Mark og Patrick #Sidst opdateret den 09-04-2019 #Opdateret af Patrick #Denne oneliner tjekker om den nuværende session af powershell er admin, hvis ikke vil den lukke den ned og starte som admin #Den har også executionpolicy sat til bypass 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 } #Variabler som bruges i scriptet #Path til det korrekte sted i regedit (HKLM =H_KEY_LOCAL_MACHINE) $regkeypath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide" #Navn på regedit entry som laves $name = "PreferExternalManifest" $value ="1" #Tester om $regkeypath eksister hvis ikke så laves den. !=Hvis ikke den eksister så..... IF(!(Test-Path "$regkeypath")) { New-Item -Path $regkeypath -Force } #Opretter by default entry som DWORD New-ItemProperty -Path $regkeypath -Name $name -Value $value -PropertyType DWORD -Force #Hvis ikke mstsc.exe.manifest eksister gør den følgende # @' '@ alt der skrives mellem disse skrives til ens output, i dette tilfælde filen mstsc.exe.manifest IF(!(Test-Path ("$Env:Systemroot" + "\System32\mstsc.exe.manifest"))){ @" false "@ | #Skriver indhold fra @''@ til en txt fil mstsc.exe.manifest Out-File -FilePath ("$Env:Systemroot" + "\System32\mstsc.exe.manifest") -Encoding default -Force } #Source-list #DPI scaling: https://blog.brankovucinec.com/2016/03/19/fix-remote-desktop-dpi-scaling-issues/ #Create regedit entry: https://www.reddit.com/r/PowerShell/comments/7sww6b/create_regkey_and_dword/ '@ #Skriver $onps1 til DPI_scaling_on.ps1 som ligges i c:\DPI\Autojustere $onps1 | Out-File c:\DPI\Autojustere\DPI_scaling_on.ps1 -Encoding ascii -Force #offps1 indeholder den brødtekst der er skal skrives til DPI_scaling_off.ps1 $offps1 =@' #Dette script er til for at fjerne DPI scaling som tidliger er sat til. #Skrevet den 09-04-2019 #Skrevet af Mark og Patrick #Sidst opdateret den 09-04-2019 #Opdateret af Patrick #Denne oneliner tjekker om den nuværende session af powershell er admin, hvis ikke vil den lukke den ned og starte som admin #Den har også executionpolicy sat til bypass 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 } #variabler som bruges $regkeypath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide" $name = "PreferExternalManifest" if (Test-Path $regkeypath){ #Sletter den registry entry som sætter DPI scaling til Remove-ItemProperty -Path $regkeypath -Name $name -ErrorAction SilentlyContinue } if (Test-Path ("$Env:Systemroot" + "\System32\mstsc.exe.manifest")){ #Sletter den manifest fil som der oprettes for at få DPI scaling til at virke Remove-Item -Path ("$Env:Systemroot" + "\System32\mstsc.exe.manifest") -ErrorAction SilentlyContinue} '@ #Skriver brødteksten fra $offps1 til DPI_scaling_off.ps1 $offps1 | Out-file C:\DPI\Autojustere\DPI_scaling_off.ps1 -Encoding ascii -Force ###################### Opretter Genveje på Skrivebordret ######################################################## #brugerens desktop $DesktopPath = [Environment]::GetFolderPath("Desktop") #Opretter en genvej til LauncherON.cmd på brugerens skrivebord. $TargetFile = "c:\DPI\Autojustere\LauncherON.cmd" $ShortcutFile = "$DesktopPath\AutojustereTIL.lnk" $DPIonShortcut = New-Object -ComObject WScript.Shell -WarningAction Ignore -ErrorAction Ignore $ShortcutON = $DPIonShortcut.CreateShortcut($ShortcutFile) $ShortcutON.TargetPath = $TargetFile $ShortcutON.Save() #Opretter en genvej til LauncherOFF.cmd på brugerens skrivebord. $TargetFile = "c:\DPI\Autojustere\LauncherOFF.cmd" $ShortcutFile = "$DesktopPath\AutojustereFRA.lnk" $DPIoffShortcut = New-Object -ComObject WScript.Shell -WarningAction Ignore -ErrorAction Ignore $ShortcutOFF = $DPIoffShortcut.CreateShortcut($ShortcutFile) $ShortcutOFF.TargetPath = $TargetFile $ShortcutOFF.Save()