From 55afa30fcd9147fe54ad1a85193e9777df2bb63b Mon Sep 17 00:00:00 2001 From: WindowsAddict Date: Sun, 23 Feb 2025 20:36:55 +0530 Subject: Improve powershell test --- .../Change_Office_Edition.cmd | 47 ++++++++++++---------- 1 file changed, 25 insertions(+), 22 deletions(-) (limited to 'MAS/Separate-Files-Version/Change_Office_Edition.cmd') diff --git a/MAS/Separate-Files-Version/Change_Office_Edition.cmd b/MAS/Separate-Files-Version/Change_Office_Edition.cmd index 29fec81..6ec47b5 100644 --- a/MAS/Separate-Files-Version/Change_Office_Edition.cmd +++ b/MAS/Separate-Files-Version/Change_Office_Edition.cmd @@ -172,40 +172,43 @@ goto dk_done ::======================================================================================================================================== +:: Elevate script as admin and pass arguments and preventing loop + +%nul1% fltmc || ( +if not defined _elev %psc% "start cmd.exe -arg '/c \"!_PSarg!\"' -verb runas" && exit /b +%eline% +echo This script needs admin rights. +echo Right click on this script and select 'Run as administrator'. +goto dk_done +) + +::======================================================================================================================================== + :: Check PowerShell -REM :PStest: $ExecutionContext.SessionState.LanguageMode :PStest: +::pstst $ExecutionContext.SessionState.LanguageMode :pstst + +for /f "delims=" %%a in ('cmd /c "%psc% ""$f=[io.file]::ReadAllText('!_batp!') -split ':pstst';iex ($f[1])""" %nul6%') do (set tstresult=%%a) -cmd /c "%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':PStest:\s*';iex ($f[1])"" | find /i "FullLanguage" %nul1% || ( +if /i "%tstresult%"=="ConstrainedLanguage" ( %eline% -cmd /c "%psc% "$ExecutionContext.SessionState.LanguageMode"" -echo: -cmd /c "%psc% "$ExecutionContext.SessionState.LanguageMode"" | find /i "FullLanguage" %nul1% && ( -echo Failed to run Powershell command but Powershell is working. -echo: -cmd /c "%psc% ""$av = Get-WmiObject -Namespace root\SecurityCenter2 -Class AntiVirusProduct; $n = @(); foreach ($i in $av) { if ($i.displayName -notlike '*windows*') { $n += $i.displayName } }; if ($n) { Write-Host ('Installed 3rd party Antivirus might be blocking the script - ' + ($n -join ', ')) -ForegroundColor White -BackgroundColor Blue }""" -echo: -set fixes=%fixes% %mas%troubleshoot -call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" -) || ( -echo PowerShell is not working. Aborting... +echo ConstrainedLanguage mode found in PowerShell. Aborting... echo If you have applied restrictions on Powershell then undo those changes. echo: set fixes=%fixes% %mas%fix_powershell call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%fix_powershell" -) goto dk_done ) -::======================================================================================================================================== - -:: Elevate script as admin and pass arguments and preventing loop - -%nul1% fltmc || ( -if not defined _elev %psc% "start cmd.exe -arg '/c \"!_PSarg!\"' -verb runas" && exit /b +if /i not "%tstresult%"=="FullLanguage" ( %eline% -echo This script needs admin rights. -echo Right click on this script and select 'Run as administrator'. +echo "%tstresult%" +cmd /c "%psc% "$ExecutionContext.SessionState.LanguageMode"" +echo PowerShell is not working properly. Aborting... +cmd /c "%psc% ""$av = Get-WmiObject -Namespace root\SecurityCenter2 -Class AntiVirusProduct; $n = @(); foreach ($i in $av) { if ($i.displayName -notlike '*windows*') { $n += $i.displayName } }; if ($n) { Write-Host ('Installed 3rd party Antivirus might be blocking the script - ' + ($n -join ', ')) -ForegroundColor White -BackgroundColor Blue }""" +echo: +set fixes=%fixes% %mas%troubleshoot +call :dk_color2 %Blue% "Help - " %_Yellow% " %mas%troubleshoot" goto dk_done ) -- cgit v1.2.3