İf ($ExecutionContext. SessionState. LanguageMode. Value__ -ne 0) {
$ExecutionContext. SessionState. LanguageMode.
Write-Host "Windows PowerShell is not running in Full Language Mode."
Write-Host "Help -
Fix PowerShell | Gravesoft" -ForegroundColor White -BackgroundColor Blue.
Return.
}
Function Check3rdAV {
$AvList = Get-CimInstance -Namespace root\SecurityCenter2 -Class AntiVirusProduct | Where-Object { $_. DisplayName -notlike '
Windows' } | Select-Object -ExpandProperty displayName.
İf ($avList) {
Write-Host '3rd party Antivirus might be blocking the script - ' -ForegroundColor White -BackgroundColor Blue -NoNewline
Write-Host " $($avList -join ', ')" -ForegroundColor DarkRed -BackgroundColor White.
}
}
Function CheckFile {
Param ([string]$FilePath)
İf (-not (Test-Path $FilePath)) {
Check3rdAV.
Write-Host "Failed to create MAS file in temp folder, aborting!"
Write-Host "Help -
Troubleshoot | MAS" -ForegroundColor White -BackgroundColor Blue.
Throw.
}
}
[Net.ServicePointManager]:SecurityProtocol = [Net.SecurityProtocolType]:TLS12
$URLs = @(
'
https://raw.githubusercontent.com/m...f1a57bd/MAS/All-In-One-Version-KL/MAS_AIO.cmd',
'
https://dev.azure.com/massgrave/Mic...sion=60c99742ce9ff1c675c6e381e17b0f4ccf1a57bd',
'
https://git.activated.win/massgrave...f1a57bd/MAS/All-In-One-Version-KL/MAS_AIO.cmd'
)
Foreach ($URL in $URLs | Sort-Object { Get-Random }) {
Try { $response = Invoke-WebRequest -Uri $URL -UseBasicParsing; break } catch {}
}
İf (-not $response) {
Check3rdAV.
Write-Host "Failed to retrieve MAS from any of the available repositories, aborting!"
Write-Host "Help -
Troubleshoot | MAS" -ForegroundColor White -BackgroundColor Blue.
Return.
}
# Verify script integrity.
$ReleaseHash = '16F0FFCDD242A0D514B9D96AE1535F48A2E2811D45A8094E98BB0A26EA2FEBBA'
$Stream = New-Object IO. MemoryStream.
$Writer = New-Object IO. StreamWriter $stream
$Writer. Write($response)
$writer.Flush()
$Stream. Position = 0
$Hash = [BitConverter]::ToString([Security.Cryptography.SHA256]::Create().ComputeHash($stream)) -replace '-'
İf ($hash -ne $releaseHash) {
Write-Warning "Hash ($hash) mismatch, aborting!'nReport this issue at
Troubleshoot | MAS"
$Response = $null
Return.
}
# Check for AutoRun registry which may create issues with CMD.
$Paths = "HKCU:\SOFTWARE\Microsoft\Command Processor", "HKLM:\SOFTWARE\Microsoft\Command Processor"
Foreach ($path in $paths) {
İf (Get-ItemProperty -Path $path -Name "Autorun" -ErrorAction SilentlyContinue) {
Write-Warning "Autorun registry found, CMD may crash! 'nManually copy-paste the below command to fix...'nRemove-ItemProperty -Path '$path' -Name 'Autorun'"
}
}
$Rand = [Guid]::NewGuid().Guid
$İsAdmin = [bool]([Security.Principal.WindowsIdentity]::GetCurrent().Groups -match 'S-1-5-32-544')
$FilePath = if ($isAdmin) { "$env:SystemRoot\Temp\MAS_$rand.cmd" } else { "$env:USERPROFILE\AppData\Local\Temp\MAS_$rand.cmd" }
Set-Content -Path $FilePath -Value "@: $rand 'r'n$response"
CheckFile $FilePath
$Env: ComSpec = "$env:SystemRoot\system32\cmd.exe"
$Chkcmd = & $env: ComSpec /c "echo CMD is working"
İf ($chkcmd -notcontains "CMD is working") {
Write-Warning "cmd.exe is not working.'nReport this issue at
Troubleshoot | MAS"
}
Start-Process -FilePath $env: ComSpec -ArgumentList "/c """"$FilePath"" $args""" -Wait
CheckFile $FilePath
$FilePaths = @("$env:SystemRoot\Temp\MAS*.cmd", "$env:USERPROFILE\AppData\Local\Temp\MAS*.cmd")
Foreach ($FilePath in $FilePaths) { Get-Item $FilePath | Remove-Item }