-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathMove-AZResource.ps1
45 lines (38 loc) · 1.65 KB
/
Move-AZResource.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
<#
This PowerShell Script will Move the Resources to another Resource Group
Requires -Version 7.0
#>
Connect-AzAccount
$ResourceName="Type Azure Resource Name"
$DestinationResourceGroupName="Type Destination ResourceGroup"
#Define Functions
Function Get-ResourceGroupID {
param([String] $ResourceGroupName)
$ResourceGroupID=(Get-AzResourceGroup -Name $ResourceGroupName).ResourceId
Return $ResourceGroupID
}
Function Get-ResourceGroupName {
Param ([String] $ResourceName)
$ResourceGroupName=(Get-AzResource -Name $ResourceName).ResourceGroupName
Return $ResourceGroupName
}
Function Get-ResourceId {
Param ([String] $ResourceName)
$ResourceID=(Get-AzResource -Name $ResourceName).ResourceId
Return $ResourceID
}
$ResourceId=(Get-ResourceId $ResourceName)
$SourceResourceGroupName=(Get-ResourceGroupName $ResourceName)
$SourceResourceGroupId=(Get-ResourceGroupID $SourceResourceGroupName)
$DestinationResourceGroupId=(Get-ResourceGroupID $DestinationResourceGroupName)
Try {
#validate if resource can move to other resourcegroup
Invoke-AzResourceAction -Action validateMoveResources -ResourceId $SourceResourceGroupId -Parameters @{resources=@($ResourceId);targetResourceGroup= $DestinationResourceGroupId} -Force -ErrorAction Stop
Move-AzResource -DestinationResourceGroupName $DestinationResourceGroupName -ResourceId $ResourceId -Force
}
Catch {
$_.Exception.Message
}
#Validate if resource has been moved or not
(Get-ResourceGroupName $ResourceName) -Eq $DestinationResourceGroupName ? "$ResourceName has been moved to $DestinationResourceGroupName" : `
"Failed to move the resource $ResourceName to $DestinationResourceGroupName Group"