Como desativar a atualização automática do Windows 11 [Script do PowerShell]

À medida que as empresas em todo o mundo se preparam para se adaptar à mais recente iteração do sistema operacional da Microsoft, muitos profissionais de TI e provedores de serviços gerenciados (MSPs) estão buscando maneiras de controlar a transição. Se a sua organização ainda não está pronta para dar o salto e você está procurando um método para desativar a atualização automática do Windows 11, você chegou ao blog certo. Aqui, analisaremos um script inestimável do PowerShell que desativa as atualizações do Windows 11 de forma eficiente.

A necessidade de controle

Antes de mergulhar no script, vale a pena considerar por que alguém pode querer desativar as atualizações do Windows 11. O Windows 11 vem com uma série de novos recursos e atualizações de segurança, mas todo profissional de TI sabe que novo nem sempre significa melhor – pelo menos, não imediatamente. Novas versões podem interromper a compatibilidade com o software existente ou criar problemas imprevistos que só podem ser gerenciados depois de conhecidos. Portanto, ter o poder de controlar quando fazer o upgrade pode evitar dores de cabeça inesperadas.

O roteiro:

Esse script do PowerShell funciona como seu mecanismo de controle. Especificamente, ele desativa a atualização do Windows 11 bloqueando o TargetReleaseVersion e o TargetReleaseVersionInfo para a versão atualmente instalada do sistema operacional Windows. Para uma equipe de profissionais de TI ou MSPs, isso é como encontrar ouro; ele oferece uma maneira perfeita de gerenciar centenas ou milhares de máquinas.

<#
.SYNOPSIS
    Disables Windows 11 upgrade.
.DESCRIPTION
    Disables Windows 11 upgrade by locking the TargetReleaseVersion and TargetReleaseVersionInfo to the currently installed version.
.EXAMPLE
    No parameters needed
    Disables Windows 11 upgrade.
.OUTPUTS
    None
.NOTES
    Minimum OS Architecture Supported: Windows 10
    Release Notes:
    Disallows the upgrade offer to Windows 11 to appear to users
    (c) 2023 NinjaOne
    By using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https://www.ninjaone.com/terms-of-use.
    Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. 
    Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. 
    Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. 
    Warranty Disclaimer: The script is provided “as is” and “as available”, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. 
    Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. 
    Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. 
    EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).
#>
[CmdletBinding()]
param ()

begin {
    function Test-IsElevated {
        $id = [System.Security.Principal.WindowsIdentity]::GetCurrent()
        $p = New-Object System.Security.Principal.WindowsPrincipal($id)
        $p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)
    }
    function Set-ItemProp {
        param (
            $Path,
            $Name,
            $Value,
            [ValidateSet("DWord", "QWord", "String", "ExpandedString", "Binary", "MultiString", "Unknown")]
            $PropertyType = "DWord"
        )
        # Do not output errors and continue
        $ErrorActionPreference = [System.Management.Automation.ActionPreference]::SilentlyContinue
        if (-not $(Test-Path -Path $Path)) {
            # Check if path does not exist and create the path
            New-Item -Path $Path -Force | Out-Null
        }
        if ((Get-ItemProperty -Path $Path -Name $Name)) {
            # Update property and print out what it was changed from and changed to
            $CurrentValue = Get-ItemProperty -Path $Path -Name $Name
            try {
                Set-ItemProperty -Path $Path -Name $Name -Value $Value -Force -Confirm:$false -ErrorAction Stop | Out-Null
            }
            catch {
                Write-Error $_
            }
            Write-Host "$Path$Name changed from $CurrentValue to $(Get-ItemProperty -Path $Path -Name $Name)"
        }
        else {
            # Create property with value
            try {
                New-ItemProperty -Path $Path -Name $Name -Value $Value -PropertyType $PropertyType -Force -Confirm:$false -ErrorAction Stop | Out-Null
            }
            catch {
                Write-Error $_
            }
            Write-Host "Set $Path$Name to $(Get-ItemProperty -Path $Path -Name $Name)"
        }
        $ErrorActionPreference = [System.Management.Automation.ActionPreference]::Continue
    }
}
process {
    if (-not (Test-IsElevated)) {
        Write-Error -Message "Access Denied. Please run with Administrator privileges."
        exit 1
    }

    # Get Current Version
    $release = (Get-ItemProperty -Path "HKLM:SOFTWAREMicrosoftWindows NTCurrentVersion" -Name ReleaseId).ReleaseId
    $ver = (Get-ItemProperty -Path "HKLM:SOFTWAREMicrosoftWindows NTCurrentVersion" -Name DisplayVersion).DisplayVersion
    $TargetReleaseVersion = if ($release -eq '2009') { $ver } Else { $release }

    # Block Windows 11 Upgrade by changing the target release version to the current version
    try {
        Set-ItemProp -Path "HKLM:SOFTWAREPoliciesMicrosoftWindowsWindowsUpdate" -Name "TargetReleaseVersion" -Value 1 -PropertyType DWord
        Set-ItemProp -Path "HKLM:SOFTWAREPoliciesMicrosoftWindowsWindowsUpdate" -Name "TargetReleaseVersionInfo" -Value "$TargetReleaseVersion" -PropertyType String
        Set-ItemProp -Path "HKLM:SOFTWAREMicrosoftWindowsUpdateUXSettings" -Name "SvOfferDeclined" -Value 1646085160366 -PropertyType QWord
    }
    catch {
        Write-Error $_
        Write-Host "Failed to block Windows 11 Upgrade."
        exit 1
    }
    exit 0
}
end {}

 

Acesse mais de 300 scripts no NinjaOne Dojo

Obter acesso

Destaques do roteiro

  1. Direitos de administrador: O script inclui uma função para verificar se ele foi executado com privilégios de administrador, o que é essencial para modificar as configurações do sistema.
  2. Alterações de registro: O script modifica as configurações da chave de registro, garantindo que os computadores sigam a política para permanecer na versão atual.
  3. Escalabilidade: Esse script pode ser implementado em várias máquinas, o que o torna uma ferramenta inestimável para os MSPs.
  4. Não são necessários parâmetros: Simplificando a experiência do usuário, o script não requer nenhum parâmetro para ser executado.

Como usar o script

  1. Salve o código: Salve o script em um arquivo com extensão .ps1, como DisableWin11Upgrade.ps1.
  2. Executar como administrador: Abra o PowerShell como administrador e navegue até o local onde o script foi salvo.
  3. Executar: Execute .DisableWin11Upgrade.ps1.

Se o script for executado com êxito, ele modificará as entradas de registro necessárias para desativar as atualizações automáticas do Windows 11.

Integração do script com o NinjaOne

A integração entre esse script do PowerShell para desativar a atualização automática do Windows 11 e o NinjaOne pode simplificar ainda mais seu processo de gerenciamento de atualizações.

Etapas para a integração:

  1. Faça o upload do script: Use o repositório de scripts do NinjaOne para carregar o script do PowerShell.
  2. Atribuição de política: Depois de carregado, o script pode ser atribuído a várias políticas que controlam um grupo de sistemas ou ambientes de clientes específicos.
  3. Execução de cronograma: Com o agendador do NinjaOne, você pode configurar o script para ser executado em intervalos específicos ou durante janelas de manutenção.
  4. Monitoramento & Alertas: Configure o NinjaOne para monitorar as chaves de registro específicas que o script modifica. Dessa forma, você será alertado imediatamente se ocorrer alguma alteração.
  5. Relatórios: Use as ferramentas de relatório do NinjaOne para verificar o sucesso do script em seus sistemas gerenciados.

Ao combinar esse script do PowerShell com os recursos robustos do NinjaOne, você não apenas obtém um método para desativar as atualizações do Windows 11, mas também um sistema para gerenciar, monitorar e gerar relatórios sobre essa atividade em escala. Ele acrescenta outra camada de eficiência e segurança ao seu ambiente de TI.

Considerações finais

Para profissionais de TI e MSPs que lidam com um número significativo de sistemas, esse script do PowerShell oferece uma maneira confiável e eficiente de desativar as atualizações do Windows 11 em toda a linha. Não se trata apenas de resistir à mudança; trata-se de controlá-la para melhor atender às necessidades de sua organização. Você não está mais sujeito aos caprichos das atualizações automáticas que podem interromper seu ambiente de TI cuidadosamente orquestrado.

Talvez você também se interesse por Como habilitar a atualização automática do Windows 11 com o PowerShell.

Próximas etapas

Montar uma equipe de TI eficaz requer uma solução centralizada que seja a principal ferramenta de entrega de serviços. Com NinjaOne, a TI monitora, gerencia, protege e oferece suporte a todos os dispositivos, onde quer que estejam, dispensando infraestrutura complexa no local.

Saiba mais sobre a solução NinjaOne Remote Script Deployment, agende uma demonstração, ou inicie sua avaliação gratuita da plataforma NinjaOne.

Categories:

You might also like