-
Notifications
You must be signed in to change notification settings - Fork 0
/
Script Atualização in-loco para VMs que executam o Windows Server no Azure.ps1
126 lines (72 loc) · 3.61 KB
/
Script Atualização in-loco para VMs que executam o Windows Server no Azure.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# Script Atualização in-loco para VMs que executam o Windows Server no Azure - Créditos Gabriel Luiz - www.gabrielluiz.com #
# Observação: Para execução no Azure Powershell.
# Parâmetros específicos do cliente.
# Grupo de recursos da VM de origem.
$resourceGroup = "WindowsServerUpgrades"
# Localização da VM de origem.
$location = "BrazilSouth"
# Zona da VM de origem, se houver.
$zone = ""
# Nome do disco para o que será criado
$diskName = "WindowsServer2022UpgradeDisk"
# Versão de destino para a atualização - deve ser server2022Upgrade ou server2019Upgrade.
$sku = "server2022Upgrade"
# Parâmetros comuns
$publisher = "MicrosoftWindowsServer"
$offer = "WindowsServerUpgrade"
$managedDiskSKU = "Standard_LRS"
# Obter a versão mais recente da Imagem de VM especial (oculta) do Azure Marketplace.
$versions = Get-AzVMImage -PublisherName $publisher -Location $location -Offer $offer -Skus $sku | sort-object -Descending {[version] $_.Version }
$latestString = $versions[0].Version
# Obter a Imagem de VM especial (oculta) do Azure Marketplace por versão - a imagem é usada para criar um disco para atualizar para a nova versão.
$image = Get-AzVMImage -Location $location `
-PublisherName $publisher `
-Offer $offer `
-Skus $sku `
-Version $latestString
#
# Criar um Grupo de Recursos se ele não existir.
#
if (-not (Get-AzResourceGroup -Name $resourceGroup -ErrorAction SilentlyContinue)) {
New-AzResourceGroup -Name $resourceGroup -Location $location
}
#
# Criar disco gerenciado a partir do LUN 0.
#
if ($zone){
$diskConfig = New-AzDiskConfig -SkuName $managedDiskSKU `
-CreateOption FromImage `
-Zone $zone `
-Location $location
} else {
$diskConfig = New-AzDiskConfig -SkuName $managedDiskSKU `
-CreateOption FromImage `
-Location $location
}
Set-AzDiskImageReference -Disk $diskConfig -Id $image.Id -Lun 0
New-AzDisk -ResourceGroupName $resourceGroup `
-DiskName $diskName `
-Disk $diskConfig
<#
# Executar a atualização in-loco.
<#
1. Conecte-se à VM usando RDP ou RDP-Bastion.
2. Determine a letra da unidade para o disco de atualização (normalmente E: ou F: se não houver outros discos de dados).
3. Inicie o Windows PowerShell.
4. Altere o diretório para o único diretório no disco de atualização.
5. Execute o seguinte comando para iniciar a atualização:
.\setup.exe /auto upgrade /dynamicupdate disable
Selecione a imagem "Atualizar para" correta com base na versão atual e na configuração da VM usando a tabela a seguir:
Atualize a partir de Atualize para
Windows Server 2012 R2 (Núcleo) Windows Server 2019 (em inglês)
Windows Server 2012 R2 Windows Server 2019 (Experiência Desktop)
Windows Server 2016 (Núcleo) Windows Server 2019 -ou- Windows Server 2022
Windows Server 2016 (Experiência Desktop) Windows Server 2019 (Experiência Desktop) -ou- Windows Server 2022 (Experiência Desktop)
Windows Server 2019 (Núcleo) Windows Server 2022 (em inglês)
Windows Server 2019 (Experiência Desktop) Windows Server 2022 (Experiência Desktop)
>#
<#
Referências:
https://learn.microsoft.com/en-us/azure/virtual-machines/windows-in-place-upgrade?WT.mc_id=5003815
https://learn.microsoft.com/pt-br/powershell/azure/?view=azps-9.3.0&WT.mc_id=5003815
#>