1
1
<#
2
2
. SYNOPSIS
3
3
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
5
5
6
6
. DESCRIPTION
7
7
Removes VMs from a subscription leaving the VHDs, NICs and other assets along with a JSON configuration file that can
10
10
. EXAMPLE
11
11
.\Archive-AzureRMvm.ps1 -ResourceGroupName 'CONTOSO'
12
12
13
- Archives all VMs in the CONTOSO resource group
13
+ Archives all VMs in the CONTOSO resource group.
14
14
15
15
. EXAMPLE
16
16
.\Archive-AzureRMvm.ps1 -ResourceGroupName 'CONTOSO' -Rehydrate
@@ -44,11 +44,6 @@ Rehydrates the VMs using the saved configuration and remaining resource group co
44
44
------------------------------------------------------------------------
45
45
#>
46
46
# 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
52
47
53
48
param (
54
49
@@ -69,9 +64,10 @@ param(
69
64
70
65
$ProgressPreference = ' SilentlyContinue'
71
66
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"
75
71
BREAK
76
72
}
77
73
@@ -86,7 +82,7 @@ function Get-StorageObject
86
82
$strgDNS = $split [2 ]
87
83
$splitDNS = $strgDNS.Split (' .' )
88
84
$storageAccountName = $splitDNS [0 ]
89
- $StorageAccountKey = (Get-AzureRmStorageAccountKey - ResourceGroupName $resourceGroupName - AccountName $StorageAccountName ).Value[0 ]
85
+ $StorageAccountKey = (Get-AzureRmStorageAccountKey - ResourceGroupName $resourceGroupName - Name $StorageAccountName ).Value[0 ]
90
86
$StorageContext = New-AzureStorageContext - StorageAccountName $StorageAccountName - StorageAccountKey $StorageAccountKey
91
87
92
88
return $StorageContext
@@ -249,12 +245,12 @@ else
249
245
250
246
$loginID = $login.context.account.id
251
247
$sub = Get-AzureRmSubscription
252
- $SubscriptionId = $sub.SubscriptionId
248
+ $SubscriptionId = $sub.Id
253
249
254
250
# check for multiple subs under same account and force user to pick one
255
251
if ($sub.count -gt 1 )
256
252
{
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
258
254
Select-AzureRmSubscription - SubscriptionId $SubscriptionId | Out-Null
259
255
$sub = Get-AzureRmSubscription - SubscriptionId $SubscriptionId
260
256
}
@@ -268,7 +264,9 @@ if(! $SubscriptionId)
268
264
break
269
265
}
270
266
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
272
270
273
271
# check for valid source resource group
274
272
if (-not ($sourceResourceGroup = Get-AzureRmResourceGroup - ResourceGroupName $resourceGroupName ))
@@ -290,7 +288,7 @@ if($Rehydrate)
290
288
{
291
289
$StorageAccountName = $StorageAccount.StorageAccountName
292
290
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 ]
294
292
$StorageContext = New-AzureStorageContext - StorageAccountName $StorageAccountName - StorageAccountKey $StorageAccountKey
295
293
296
294
foreach ($StorageContainer in (Get-AzureStorageContainer - Context $StorageContext ) )
@@ -336,7 +334,7 @@ if($Rehydrate)
336
334
$rehydrateVMDiag = (get-content " $env: temp \$TempDiagRehydratefileName " - ea Stop) -Join " `n " | ConvertFrom-Json
337
335
$wadCfg = $rehydrateVMDiag.wadCfg
338
336
$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 ]
340
338
write-verbose " Applying VM Diagnostic settings to virtual machine $ ( $rehydrateVM.Name ) ..." - verbose
341
339
Set-AzureRmVMDiagnosticsExtension - ResourceGroupName $ResourceGroupName - VMName $ ($rehydrateVM.Name ) - DiagnosticsConfigurationPath " $env: temp \$TempDiagRehydratefileName " - StorageAccountName $wadStorageAccount - StorageAccountKey $wadStorageAccountKey | out-null
342
340
}
0 commit comments