Skip to content

Commit 080141d

Browse files
author
Jeff Bowles
committed
added support for managed disk and updated modules
1 parent 9252942 commit 080141d

7 files changed

+900
-476
lines changed

Archive-AzureRMvm.ps1

+14-16
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<#
22
.SYNOPSIS
33
Archives or Rehydrates Azure V2 (ARM) Virtual Machines from specified resource group to save VM core allotment
4-
4+
Requires AzureRM module version 4.2.1 or later
55
66
.DESCRIPTION
77
Removes VMs from a subscription leaving the VHDs, NICs and other assets along with a JSON configuration file that can
@@ -10,7 +10,7 @@
1010
.EXAMPLE
1111
.\Archive-AzureRMvm.ps1 -ResourceGroupName 'CONTOSO'
1212
13-
Archives all VMs in the CONTOSO resource group
13+
Archives all VMs in the CONTOSO resource group.
1414
1515
.EXAMPLE
1616
.\Archive-AzureRMvm.ps1 -ResourceGroupName 'CONTOSO' -Rehydrate
@@ -44,11 +44,6 @@ Rehydrates the VMs using the saved configuration and remaining resource group co
4444
------------------------------------------------------------------------
4545
#>
4646
#Requires -Version 4.0
47-
#Requires -Module AzureRM.Profile
48-
#Requires -Module AzureRM.Resources
49-
#Requires -Module AzureRM.Storage
50-
#Requires -Module AzureRM.Compute
51-
#Requires -Module AzureRM.Network
5247

5348
param(
5449

@@ -69,9 +64,10 @@ param(
6964

7065
$ProgressPreference = 'SilentlyContinue'
7166

72-
if ((Get-Module AzureRM.profile).Version -lt "2.1.0")
73-
{
74-
Write-warning "Old Version of Azure Modules $((Get-Module AzureRM.profile).Version.ToString()) detected. Minimum of 2.1.0 required. Run Update-AzureRM"
67+
import-module AzureRM
68+
69+
if ((Get-Module AzureRM).Version -lt "4.2.1") {
70+
Write-warning "Old version of Azure PowerShell module $((Get-Module AzureRM).Version.ToString()) detected. Minimum of 4.2.1 required. Run Update-Module AzureRM"
7571
BREAK
7672
}
7773

@@ -86,7 +82,7 @@ function Get-StorageObject
8682
$strgDNS = $split[2]
8783
$splitDNS = $strgDNS.Split('.')
8884
$storageAccountName = $splitDNS[0]
89-
$StorageAccountKey = (Get-AzureRmStorageAccountKey -ResourceGroupName $resourceGroupName -AccountName $StorageAccountName).Value[0]
85+
$StorageAccountKey = (Get-AzureRmStorageAccountKey -ResourceGroupName $resourceGroupName -Name $StorageAccountName).Value[0]
9086
$StorageContext = New-AzureStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey
9187

9288
return $StorageContext
@@ -249,12 +245,12 @@ else
249245

250246
$loginID = $login.context.account.id
251247
$sub = Get-AzureRmSubscription
252-
$SubscriptionId = $sub.SubscriptionId
248+
$SubscriptionId = $sub.Id
253249

254250
# check for multiple subs under same account and force user to pick one
255251
if($sub.count -gt 1)
256252
{
257-
$SubscriptionId = (Get-AzureRmSubscription | Select-Object * | Out-GridView -title "Select Target Subscription" -OutputMode Single).SubscriptionId
253+
$SubscriptionId = (Get-AzureRmSubscription | Select-Object * | Out-GridView -title "Select Target Subscription" -OutputMode Single).Id
258254
Select-AzureRmSubscription -SubscriptionId $SubscriptionId | Out-Null
259255
$sub = Get-AzureRmSubscription -SubscriptionId $SubscriptionId
260256
}
@@ -268,7 +264,9 @@ if(! $SubscriptionId)
268264
break
269265
}
270266

271-
write-host "Logged into $($sub.SubscriptionName) with subscriptionID $SubscriptionId as $loginID" -f Green
267+
$SubscriptionName = $sub.Name
268+
269+
write-host "Logged into $SubscriptionName with subscriptionID $SubscriptionId as $loginID" -f Green
272270

273271
# check for valid source resource group
274272
if(-not ($sourceResourceGroup = Get-AzureRmResourceGroup -ResourceGroupName $resourceGroupName))
@@ -290,7 +288,7 @@ if($Rehydrate)
290288
{
291289
$StorageAccountName = $StorageAccount.StorageAccountName
292290
write-verbose "Searching for rehydrate files in storage account $StorageAccountName)..." -verbose
293-
$StorageAccountKey = (Get-AzureRmStorageAccountKey -ResourceGroupName $resourceGroupName -AccountName $StorageAccountName).Value[0]
291+
$StorageAccountKey = (Get-AzureRmStorageAccountKey -ResourceGroupName $resourceGroupName -Name $StorageAccountName).Value[0]
294292
$StorageContext = New-AzureStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey
295293

296294
foreach($StorageContainer in (Get-AzureStorageContainer -Context $StorageContext) )
@@ -336,7 +334,7 @@ if($Rehydrate)
336334
$rehydrateVMDiag = (get-content "$env:temp\$TempDiagRehydratefileName" -ea Stop) -Join "`n"| ConvertFrom-Json
337335
$wadCfg = $rehydrateVMDiag.wadCfg
338336
$wadStorageAccount = $rehydrateVMDiag.StorageAccount
339-
$wadStorageAccountKey = (Get-AzureRmStorageAccountKey -ResourceGroupName $resourceGroupName -AccountName $wadStorageAccount -ea Stop).Value[0]
337+
$wadStorageAccountKey = (Get-AzureRmStorageAccountKey -ResourceGroupName $resourceGroupName -Name $wadStorageAccount -ea Stop).Value[0]
340338
write-verbose "Applying VM Diagnostic settings to virtual machine $($rehydrateVM.Name)..." -verbose
341339
Set-AzureRmVMDiagnosticsExtension -ResourceGroupName $ResourceGroupName -VMName $($rehydrateVM.Name) -DiagnosticsConfigurationPath "$env:temp\$TempDiagRehydratefileName" -StorageAccountName $wadStorageAccount -StorageAccountKey $wadStorageAccountKey | out-null
342340
}

Backup-AzureRMvm.ps1

+16-16
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
<#
22
.SYNOPSIS
3-
Does copy of VHD blobs attached to each VM in a resource group to a designated backup container
4-
3+
Copies VHD blobs attached to each VM in a resource group to a designated backup container.
4+
Does not work with VMs configured with managed disks because they allow snapshots.
5+
6+
Requires AzureRM module version 4.2.1 or later.
57
68
.DESCRIPTION
79
Copies VHD blobs from each VM in a resource group to the vhd-backups container or other container name
@@ -33,7 +35,7 @@
3335
Original Author: https://github.com/JeffBow
3436
3537
------------------------------------------------------------------------
36-
Copyright (C) 2016 Microsoft Corporation
38+
Copyright (C) 2017 Microsoft Corporation
3739
3840
You have a royalty-free right to use, modify, reproduce and distribute
3941
this sample script (and/or any modified version) in any way
@@ -42,11 +44,6 @@
4244
------------------------------------------------------------------------
4345
#>
4446
#Requires -Version 4.0
45-
#Requires -Module AzureRM.Profile
46-
#Requires -Module AzureRM.Resources
47-
#Requires -Module AzureRM.Storage
48-
#Requires -Module AzureRM.Compute
49-
5047

5148
param(
5249

@@ -63,11 +60,14 @@ param(
6360
)
6461
$ProgressPreference = 'SilentlyContinue'
6562

66-
if ((Get-Module AzureRM.profile).Version -lt "2.1.0") {
67-
Write-warning "Old Version of Azure Modules $((Get-Module AzureRM.profile).Version.ToString()) detected. Minimum of 2.1.0 required. Run Update-AzureRM"
63+
import-module AzureRM
64+
65+
if ((Get-Module AzureRM).Version -lt "4.2.1") {
66+
Write-warning "Old version of Azure PowerShell module $((Get-Module AzureRM).Version.ToString()) detected. Minimum of 4.2.1 required. Run Update-Module AzureRM"
6867
BREAK
6968
}
7069

70+
7171
<###############################
7272
Get Storage Context function
7373
################################>
@@ -78,7 +78,7 @@ function Get-StorageObject
7878
$strgDNS = $split[2]
7979
$splitDNS = $strgDNS.Split('.')
8080
$storageAccountName = $splitDNS[0]
81-
$StorageAccountKey = (Get-AzureRmStorageAccountKey -ResourceGroupName $resourceGroupName -AccountName $StorageAccountName).Value[0]
81+
$StorageAccountKey = (Get-AzureRmStorageAccountKey -ResourceGroupName $resourceGroupName -Name $StorageAccountName).Value[0]
8282
$StorageContext = New-AzureStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey
8383

8484

@@ -161,16 +161,16 @@ function copy-azureBlob
161161
write-host "Enter credentials for your Azure Subscription..." -F Yellow
162162
$login= Login-AzureRmAccount -EnvironmentName $Environment
163163
$loginID = $login.context.account.id
164-
$sub = Get-AzureRmSubscription -TenantID $login.context.Subscription.TenantID
165-
$SubscriptionId = $sub.SubscriptionId
164+
$sub = Get-AzureRmSubscription
165+
$SubscriptionId = $sub.Id
166166

167167
# check for multiple subs under same account and force user to pick one
168168
if($sub.count -gt 1)
169169
{
170-
$SubscriptionId = (Get-AzureRmSubscription | select * | Out-GridView -title "Select Target Subscription" -OutputMode Single).SubscriptionId
170+
$SubscriptionId = (Get-AzureRmSubscription | select * | Out-GridView -title "Select Target Subscription" -OutputMode Single).Id
171171
Select-AzureRmSubscription -SubscriptionId $SubscriptionId| Out-Null
172172
$sub = Get-AzureRmSubscription -SubscriptionId $SubscriptionId
173-
$SubscriptionId = $sub.SubscriptionId
173+
$SubscriptionId = $sub.Id
174174
}
175175

176176

@@ -182,7 +182,7 @@ if(! $SubscriptionId)
182182
break
183183
}
184184

185-
write-verbose "Logged into $($sub.SubscriptionName) with subscriptionID $SubscriptionId as $loginID" -verbose
185+
write-verbose "Logged into $($sub.Name) with subscriptionID $SubscriptionId as $loginID" -verbose
186186

187187

188188
$resourceGroupVMs = Get-AzureRMVM -ResourceGroupName $resourceGroupName

0 commit comments

Comments
 (0)