@@ -152,24 +152,45 @@ function Get-AzMigrateLocalServerReplication {
152152 $null = $PSBoundParameters.Remove (' ProjectID' )
153153 $null = $PSBoundParameters.Remove (' MachineName' )
154154
155+ # Set common ErrorVariable and ErrorAction for get behaviors
156+ $null = $PSBoundParameters.Add (' ErrorVariable' , ' notPresent' )
157+ $null = $PSBoundParameters.Add (' ErrorAction' , ' SilentlyContinue' )
158+
155159 # Validate ARM ID format from inputs
156- if ($hasTargetObjectId -and ! (Test-AzureResourceIdFormat - Data $TargetObjectID - Format $IdFormats.ProtectedItemArmIdTemplate )) {
157- throw " Invalid -TargetObjectID '$TargetObjectID '. A valid protected item ARM ID should follow the format '$ ( $IdFormats.ProtectedItemArmIdTemplate ) '."
160+ if ($hasTargetObjectId -and ! (Test-AzureResourceIdFormat - Data $TargetObjectID - Format $IdFormats.ProtectedItemArmIdTemplate ))
161+ {
162+ throw New-InvalidResourceIdProvidedException `
163+ - ResourceId $TargetObjectID `
164+ - ResourceType " ProtectedItem" `
165+ - Format $IdFormats.ProtectedItemArmIdTemplate
158166 }
159167
160- if ($hasDiscoveredMachineId -and ! (Test-AzureResourceIdFormat - Data $DiscoveredMachineId - Format $IdFormats.MachineArmIdTemplate )) {
161- throw " Invalid -DiscoveredMachineId '$DiscoveredMachineId '. A valid machine ARM ID should follow the format '$ ( $IdFormats.MachineArmIdTemplate ) '."
168+ if ($hasDiscoveredMachineId -and ! (Test-AzureResourceIdFormat - Data $DiscoveredMachineId - Format $IdFormats.MachineArmIdTemplate ))
169+ {
170+ throw New-InvalidResourceIdProvidedException `
171+ - ResourceId $DiscoveredMachineId `
172+ - ResourceType " DiscoveredMachine" `
173+ - Format $IdFormats.MachineArmIdTemplate
162174 }
163175
164- if ($hasResourceGroupId -and ! (Test-AzureResourceIdFormat - Data $ResourceGroupID - Format $IdFormats.ResourceGroupArmIdTemplate )) {
165- throw " Invalid -ResourceGroupID '$ResourceGroupID '. A valid resource group ARM ID should follow the format '$ ( $IdFormats.ResourceGroupArmIdTemplate ) '."
176+ if ($hasResourceGroupId -and ! (Test-AzureResourceIdFormat - Data $ResourceGroupID - Format $IdFormats.ResourceGroupArmIdTemplate ))
177+ {
178+ throw New-InvalidResourceIdProvidedException `
179+ - ResourceId $ResourceGroupID `
180+ - ResourceType " ResourceGroup" `
181+ - Format $IdFormats.ResourceGroupArmIdTemplate
166182 }
167183
168- if ($hasProjectId -and ! (Test-AzureResourceIdFormat - Data $ProjectID - Format $IdFormats.MigrateProjectArmIdTemplate )) {
169- throw " Invalid -ProjectID '$ProjectID '. A valid migrate project ARM ID should follow the format '$ ( $IdFormats.MigrateProjectArmIdTemplate ) '."
184+ if ($hasProjectId -and ! (Test-AzureResourceIdFormat - Data $ProjectID - Format $IdFormats.MigrateProjectArmIdTemplate ))
185+ {
186+ throw New-InvalidResourceIdProvidedException `
187+ - ResourceId $ProjectID `
188+ - ResourceType " MigrateProject" `
189+ - Format $IdFormats.MigrateProjectArmIdTemplate
170190 }
171191
172- if ($parameterSet -eq ' GetBySDSID' ) {
192+ if ($parameterSet -eq ' GetBySDSID' )
193+ {
173194 # $DiscoveredMachineId is in the format of
174195 # "/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.OffAzure/{2}/{3}/machines/{4}"
175196 $machineIdArray = $DiscoveredMachineId.Split (" /" )
@@ -181,56 +202,70 @@ function Get-AzMigrateLocalServerReplication {
181202 $null = $PSBoundParameters.Add (' ResourceGroupName' , $ResourceGroupName )
182203 $null = $PSBoundParameters.Add (' SiteName' , $siteName )
183204
184- if (($siteType -ne $SiteTypes.HyperVSites ) -and ($siteType -ne $SiteTypes.VMwareSites )) {
205+ if (($siteType -ne $SiteTypes.HyperVSites ) -and ($siteType -ne $SiteTypes.VMwareSites ))
206+ {
185207 throw " Unknown machine site '$siteName ' with Type '$siteType '."
186208 }
187209
188- # Occasionally, Get Machine Site will not return machine site even when the site exist,
189- # hence retry get machine site.
190- if ($siteType -eq $SiteTypes.VMwareSites ) {
191- $siteObject = InvokeAzMigrateGetCommandWithRetries `
192- - CommandName ' Az.Migrate\Get-AzMigrateSite' `
193- - Parameters $PSBoundParameters `
194- - ErrorMessage " Machine site '$siteName ' with Type '$siteType ' not found."
195- } elseif ($siteType -eq $SiteTypes.HyperVSites ) {
196- $siteObject = InvokeAzMigrateGetCommandWithRetries `
197- - CommandName ' Az.Migrate.Internal\Get-AzMigrateHyperVSite' `
198- - Parameters $PSBoundParameters `
199- - ErrorMessage " Machine site '$siteName ' with Type '$siteType ' not found."
210+ # Get site with ResourceGroupName and SiteName
211+ if ($siteType -eq $SiteTypes.VMwareSites )
212+ {
213+ $siteObject = Az.Migrate.private\Get-AzMigrateSite_Get @PSBoundParameters
214+ } elseif ($siteType -eq $SiteTypes.HyperVSites )
215+ {
216+ $siteObject = Az.Migrate.Internal\Get-AzMigrateHyperVSite @PSBoundParameters
217+ }
218+
219+ if ($null -eq $siteObject )
220+ {
221+ throw New-AzMigrateSiteNotFoundException `
222+ - Name $siteName `
223+ - ResourceGroupName $ResourceGroupName `
224+ - SiteType $siteType
200225 }
226+ $null = $PSBoundParameters.Remove (' SiteName' )
201227
202228 # $siteObject is not null or exception would have been thrown
203229 $ProjectName = $siteObject.DiscoverySolutionId.Split (" /" )[8 ]
204230
205- $null = $PSBoundParameters.Remove (' SiteName' )
206-
207- # Get the migrate solution.
208- $amhSolutionName = " Servers-Migration-ServerMigration_DataReplication"
231+ # Get the migrate solution with ResourceGroupName, Name, MigrateProjectName
232+ $amhSolutionName = $AzMigrateSolutions.DataReplicationSolution
209233 $null = $PSBoundParameters.Add (" Name" , $amhSolutionName )
210234 $null = $PSBoundParameters.Add (" MigrateProjectName" , $ProjectName )
211-
212- $solution = InvokeAzMigrateGetCommandWithRetries `
213- - CommandName ' Az.Migrate\Get-AzMigrateSolution' `
214- - Parameters $PSBoundParameters `
215- - ErrorMessage " No Data Replication Service Solution '$amhSolutionName ' found in resource group '$ResourceGroupName ' and project '$ProjectName '. Please verify your appliance setup."
216-
217- $null = $PSBoundParameters.Remove (" Name" )
235+ $solution = Az.Migrate.private\Get-AzMigrateSolution_Get @PSBoundParameters
236+ if ($null -eq $solution )
237+ {
238+ throw New-AzMigrateSolutionNotFoundException `
239+ - Name $amhSolutionName `
240+ - ResourceGroupName $ResourceGroupName `
241+ - ProjectName $ProjectName
242+ }
218243 $null = $PSBoundParameters.Remove (" MigrateProjectName" )
244+ $null = $PSBoundParameters.Remove (" Name" )
219245
220- $VaultName = $solution.DetailExtendedDetail.AdditionalProperties.vaultId.Split (" /" )[8 ]
221- if ([string ]::IsNullOrEmpty($VaultName )) {
222- throw " Azure Migrate Project not configured: missing replication vault. Setup Azure Migrate Project and run the Initialize-AzMigrateLocalReplicationInfrastructure script before proceeding."
246+ $vaultId = $solution.DetailExtendedDetail [" vaultId" ]
247+ $vaultIdArray = $vaultId.Split (" /" )
248+ if ($vaultIdArray.Length -lt 9 )
249+ {
250+ throw New-ReplicationVaultNotFoundInAMHSolutionException - VaultId $vaultId
223251 }
252+ $VaultName = $vaultIdArray [8 ]
253+
254+ # Remove common ErrorVariable and ErrorAction for get behaviors
255+ $null = $PSBoundParameters.Remove (' ErrorVariable' )
256+ $null = $PSBoundParameters.Remove (' ErrorAction' )
224257
258+ # Get protected item with ResourceGroupName, VaultName, ProtectedItemName
225259 $null = $PSBoundParameters.Add (" VaultName" , $VaultName )
226260 $null = $PSBoundParameters.Add (" Name" , $ProtectedItemName )
227-
228261 return Az.Migrate.Internal\Get-AzMigrateProtectedItem @PSBoundParameters
229262 }
230263
231- if (($parameterSet -match ' List' ) -or ($parameterSet -eq ' GetByMachineName' )) {
264+ if (($parameterSet -match ' List' ) -or ($parameterSet -eq ' GetByMachineName' ))
265+ {
232266 # Retrieve ResourceGroupName, ProjectName if ListByID
233- if ($parameterSet -eq ' ListByID' ) {
267+ if ($parameterSet -eq ' ListByID' )
268+ {
234269 # $ResourceGroupID is in the format of "/subscriptions/{0}/resourceGroups/{1}"
235270 $resourceGroupIdArray = $ResourceGroupID.Split (' /' )
236271 $ResourceGroupName = $resourceGroupIdArray [4 ] # {1}
@@ -241,26 +276,36 @@ function Get-AzMigrateLocalServerReplication {
241276 $ProjectName = $projectIdArray [8 ] # {2}
242277 }
243278
244- $amhSolutionName = " Servers-Migration-ServerMigration_DataReplication"
279+ # Get the migrate solution with ResourceGroupName, Name, MigrateProjectName
280+ $amhSolutionName = $AzMigrateSolutions.DataReplicationSolution
245281 $null = $PSBoundParameters.Add (" ResourceGroupName" , $ResourceGroupName )
246282 $null = $PSBoundParameters.Add (" Name" , $amhSolutionName )
247283 $null = $PSBoundParameters.Add (" MigrateProjectName" , $ProjectName )
248-
249- $solution = InvokeAzMigrateGetCommandWithRetries `
250- - CommandName ' Az.Migrate\Get-AzMigrateSolution' `
251- - Parameters $PSBoundParameters `
252- - ErrorMessage " No Data Replication Service Solution '$amhSolutionName ' found in resource group '$ResourceGroupName ' and project '$ProjectName '. Please verify your appliance setup."
253-
254- $null = $PSBoundParameters.Remove (" Name" )
284+ $solution = Az.Migrate.private\Get-AzMigrateSolution_Get @PSBoundParameters
285+ if ($null -eq $solution )
286+ {
287+ throw New-AzMigrateSolutionNotFoundException `
288+ - Name $amhSolutionName `
289+ - ResourceGroupName $ResourceGroupName `
290+ - ProjectName $ProjectName
291+ }
255292 $null = $PSBoundParameters.Remove (" MigrateProjectName" )
293+ $null = $PSBoundParameters.Remove (" Name" )
256294
257- $VaultName = $solution.DetailExtendedDetail.AdditionalProperties.vaultId.Split (" /" )[8 ]
258- if ([string ]::IsNullOrEmpty($VaultName )) {
259- throw " Azure Migrate Project not configured: missing replication vault. Setup Azure Migrate Project and run the Initialize-AzMigrateLocalReplicationInfrastructure script before proceeding."
295+ $vaultId = $solution.DetailExtendedDetail [" vaultId" ]
296+ $vaultIdArray = $vaultId.Split (" /" )
297+ if ($vaultIdArray.Length -lt 9 )
298+ {
299+ throw New-ReplicationVaultNotFoundInAMHSolutionException - VaultId $vaultId
260300 }
301+ $VaultName = $vaultIdArray [8 ]
261302
303+ # Remove common ErrorVariable and ErrorAction for get behaviors
304+ $null = $PSBoundParameters.Remove (' ErrorVariable' )
305+ $null = $PSBoundParameters.Remove (' ErrorAction' )
306+
307+ # Get protected item with ResourceGroupName, VaultName then filter
262308 $null = $PSBoundParameters.Add (" VaultName" , $VaultName )
263-
264309 $replicatingItems = Az.Migrate.Internal\Get-AzMigrateProtectedItem @PSBoundParameters
265310
266311 if ($parameterSet -eq " GetByMachineName" ) {
@@ -269,8 +314,10 @@ function Get-AzMigrateLocalServerReplication {
269314 return $replicatingItems
270315 }
271316
272- if (($parameterSet -eq " GetByInputObject" ) -or ($parameterSet -eq " GetByItemID" )) {
273- if ($parameterSet -eq ' GetByInputObject' ) {
317+ if (($parameterSet -eq " GetByInputObject" ) -or ($parameterSet -eq " GetByItemID" ))
318+ {
319+ if ($parameterSet -eq ' GetByInputObject' )
320+ {
274321 $TargetObjectID = $InputObject.Id
275322 }
276323
@@ -280,10 +327,15 @@ function Get-AzMigrateLocalServerReplication {
280327 $ResourceGroupName = $objectIdArray [4 ] # {1}
281328 $VaultName = $objectIdArray [8 ] # {2}
282329 $ProtectedItemName = $objectIdArray [10 ] # {3}
330+
331+ # Remove common ErrorVariable and ErrorAction for get behaviors
332+ $null = $PSBoundParameters.Remove (' ErrorVariable' )
333+ $null = $PSBoundParameters.Remove (' ErrorAction' )
334+
335+ # Get protected item with ResourceGroupName, VaultName, ProtectedItemName
283336 $null = $PSBoundParameters.Add (" ResourceGroupName" , $ResourceGroupName )
284337 $null = $PSBoundParameters.Add (" VaultName" , $VaultName )
285338 $null = $PSBoundParameters.Add (" Name" , $ProtectedItemName )
286-
287339 return Az.Migrate.Internal\Get-AzMigrateProtectedItem @PSBoundParameters
288340 }
289341 }
0 commit comments