ScVmm.Autorest/custom/New-AzScVmmVM.ps1
# ---------------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # http://www.apache.org/licenses/LICENSE-2.0 # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Code generated by Microsoft (R) AutoRest Code Generator.Changes may cause incorrect behavior and will be lost if the code # is regenerated. # ---------------------------------------------------------------------------------- <# .Synopsis The operation to create a virtual machine. Please note some properties can be set only during virtual machine creation. .Description The operation to create a virtual machine. Please note some properties can be set only during virtual machine creation. To enable existing SCVMM virtual machine in Azure execute the command with `InventoryUuid` or `InventoryItemId`. To create a new virtual machine execute the command with `CloudName` and `TemplateName` or equivalent Id parameters. To enable resource in the same Resource Group as VMM Sever/Cloud/Virtual Network/VM Template resource resides execute the command with `CreateByName` or `CreateExpandedByName` Parameter Set. To enable resource in a different Resource Group than the one where VMM Sever/Cloud/Virtual Network/VM Template resource resides execute the command with `CreateExpandedById` Parameter Set. `InventoryUuid` can be obtained using `Get-AzScVmmInventoryItem -VmmServerName <> -ResourceGroupName <>` (check Name(UUID format) for required InventoryItemName and InventoryType). `InventoryItemId` can be obtained using `Get-AzScVmmInventoryItem -VmmServerName <> -ResourceGroupName <> -Name <uuid>` (check for Id property in the response). `VmmServerId` can be retrieved using `Get-AzScVmmServer` (check for `Id` property in the response). `CloudId` can be retrieved using `Get-AzScVmmCloud` (check for `Id` property in the response). `TemplateId` can be retrieved using `Get-AzScVmmVmTemplate` (check for `Id` property in the response). `AvailabilitySetId` can be retrieved using `Get-AzScVmmAvailabilitySet` (check for `Id` property in the response). `CustomLocationId` can be retrieved using `Get-AzScVmmServer` (check for `ExtendedLocationName` property in the response). .Example New-AzScVmmVM -Name "test-vm" -ResourceGroupName "test-rg-01" -VmmServerName "test-vmm" -InventoryUuid "00000000-1111-0000-0001-000000000000" -Location "eastus" .Example New-AzScVmmVM -Name "test-vm" -ResourceGroupName "test-rg-01" -VmmServerName "test-vmm" -Location 'eastus' -CloudName 'test-cloud' -TemplateName 'test-template' .Outputs Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Models.IVirtualMachineInstance .Notes COMPLEX PARAMETER PROPERTIES To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. AVAILABILITYSET <IAvailabilitySetListItem[]>: Availability Sets in vm. [Id <String>]: Gets the ARM Id of the microsoft.scvmm/availabilitySets resource. [Name <String>]: Gets or sets the name of the availability set. NETWORKPROFILENETWORKINTERFACE <INetworkInterface[]>: Gets or sets the list of network interfaces associated with the virtual machine. [Ipv4AddressType <String>]: Gets or sets the ipv4 address type. [Ipv6AddressType <String>]: Gets or sets the ipv6 address type. [MacAddress <String>]: Gets or sets the nic MAC address. [MacAddressType <String>]: Gets or sets the mac address type. [Name <String>]: Gets or sets the name of the network interface. [NicId <String>]: Gets or sets the nic id. [VirtualNetworkId <String>]: Gets or sets the ARM Id of the Microsoft.ScVmm/virtualNetwork resource to connect the nic. STORAGEPROFILEDISK <IVirtualDisk[]>: Gets or sets the list of virtual disks associated with the virtual machine. [Bus <Int32?>]: Gets or sets the disk bus. [BusType <String>]: Gets or sets the disk bus type. [CreateDiffDisk <String>]: Gets or sets a value indicating diff disk. [DiskId <String>]: Gets or sets the disk id. [DiskSizeGb <Int32?>]: Gets or sets the disk total size. [Lun <Int32?>]: Gets or sets the disk lun. [Name <String>]: Gets or sets the name of the disk. [StorageQoSPolicyId <String>]: The ID of the QoS policy. [StorageQoSPolicyName <String>]: The name of the policy. [TemplateDiskId <String>]: Gets or sets the disk id in the template. [VhdType <String>]: Gets or sets the disk vhd type. .Link https://learn.microsoft.com/powershell/module/az.scvmm/new-azscvmmvm #> function New-AzScVmmVM { [OutputType([Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Models.IVirtualMachineInstance])] [CmdletBinding(DefaultParameterSetName='CreateExpandedByName', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] param( [Parameter(Mandatory)] [Alias('VMName')] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Path')] [System.String] # The name of the virtual machine. ${Name}, [Parameter(Mandatory)] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Path')] [System.String] # The name of the resource group. # The name is case insensitive. ${ResourceGroupName}, [Parameter()] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Path')] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Runtime.DefaultInfo(Script = '(Get-AzContext).Subscription.Id')] [System.String] # The ID of the target subscription. # The value must be an UUID. ${SubscriptionId}, [Parameter(Mandatory)] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Body')] [System.String] # The geo-location where the resource lives. ${Location}, [Parameter(ParameterSetName='CreateByName', Mandatory)] [Parameter(ParameterSetName='CreateExpandedByName', Mandatory)] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Body')] [System.String] # Name of the vmmServer resource in which this resource resides. ${VmmServerName}, [Parameter(ParameterSetName='CreateByName')] [Parameter(ParameterSetName='CreateExpandedByName')] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Body')] [System.String] # UUID of the inventory virtual machine resource to enable in Azure. ${InventoryUuid}, [Parameter(ParameterSetName='CreateByName')] [Parameter(ParameterSetName='CreateExpandedByName')] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Body')] [System.String] # UUID of the cloud resource to use for deploying the vm. ${CloudName}, [Parameter(ParameterSetName='CreateByName')] [Parameter(ParameterSetName='CreateExpandedByName')] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Body')] [System.String] # Name of the template resource to use for deploying the vm. ${TemplateName}, [Parameter(ParameterSetName='CreateExpandedByName')] [AllowEmptyCollection()] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Body')] [System.String[]] # Availability Sets in vm. ${AvailabilitySetName}, [Parameter(ParameterSetName='CreateExpandedById', Mandatory)] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Body')] [System.String] # ARM Id of the vmmServer resource in which this resource resides. ${VmmServerId}, [Parameter(ParameterSetName='CreateExpandedById', Mandatory)] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Body')] [System.String] # ARM Id of the custom location. ${CustomLocationId}, [Parameter(ParameterSetName='CreateExpandedById')] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Body')] [System.String] # ARM Id of the inventory virtual machine resource to enable in Azure. ${InventoryId}, [Parameter(ParameterSetName='CreateExpandedById')] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Body')] [System.String] # ARM Id of the cloud resource to use for deploying the vm. ${CloudId}, [Parameter(ParameterSetName='CreateExpandedById')] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Body')] [System.String] # ARM Id of the template resource to use for deploying the vm. ${TemplateId}, [Parameter(ParameterSetName='CreateExpandedById')] [AllowEmptyCollection()] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Body')] [System.String[]] # Availability Sets in vm. ${AvailabilitySetId}, [Parameter(ParameterSetName='CreateExpandedByName')] [Parameter(ParameterSetName='CreateExpandedById')] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Body')] [System.String] # Sets computer name. ${ComputerName}, [Parameter(ParameterSetName='CreateExpandedByName')] [Parameter(ParameterSetName='CreateExpandedById')] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Body')] [System.Security.SecureString] # Admin password of the virtual machine. ${AdminPassword}, [Parameter(ParameterSetName='CreateExpandedByName')] [Parameter(ParameterSetName='CreateExpandedById')] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Body')] [System.Int32] # Generation for the vm. ${Generation}, [Parameter(ParameterSetName='CreateExpandedByName')] [Parameter(ParameterSetName='CreateExpandedById')] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Body')] [System.Int32] # Gets or sets the number of vCPUs for the vm. ${CpuCount}, [Parameter(ParameterSetName='CreateExpandedByName')] [Parameter(ParameterSetName='CreateExpandedById')] [System.Management.Automation.SwitchParameter] # Whether to enable dynamic memory or not. ${DynamicMemoryEnabled}, [Parameter(ParameterSetName='CreateExpandedByName')] [Parameter(ParameterSetName='CreateExpandedById')] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Body')] [System.Int32] # Gets or sets the max dynamic memory for the vm. ${DynamicMemoryMaxMb}, [Parameter(ParameterSetName='CreateExpandedByName')] [Parameter(ParameterSetName='CreateExpandedById')] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Body')] [System.Int32] # Gets or sets the min dynamic memory for the vm. ${DynamicMemoryMinMb}, [Parameter(ParameterSetName='CreateExpandedByName')] [Parameter(ParameterSetName='CreateExpandedById')] [System.Management.Automation.SwitchParameter] # Whether to enable processor compatibility mode for live migration of VMs. ${LimitCpuForMigration}, [Parameter(ParameterSetName='CreateExpandedByName')] [Parameter(ParameterSetName='CreateExpandedById')] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Body')] [System.Int32] # MemoryMB is the size of a virtual machine's memory, in MB. ${MemoryMb}, [Parameter(ParameterSetName='CreateExpandedByName')] [Parameter(ParameterSetName='CreateExpandedById')] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Body')] [System.String] # Type of checkpoint supported for the vm. ${CheckpointType}, [Parameter(ParameterSetName='CreateExpandedByName')] [Parameter(ParameterSetName='CreateExpandedById')] [AllowEmptyCollection()] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Body')] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Models.INetworkInterface[]] # Gets or sets the list of network interfaces associated with the virtual machine. ${NetworkInterface}, [Parameter(ParameterSetName='CreateExpandedByName')] [Parameter(ParameterSetName='CreateExpandedById')] [AllowEmptyCollection()] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Body')] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Models.IVirtualDisk[]] # Gets or sets the list of virtual disks associated with the virtual machine. ${Disk}, [Parameter(ParameterSetName='CreateByName')] [Parameter(ParameterSetName='CreateExpandedByName')] [Parameter(ParameterSetName='CreateExpandedById')] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Body')] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Runtime.Info(PossibleTypes=([Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Models.IResourceUpdateTags]))] [System.Collections.Hashtable] # Resource tags ${Tag}, [Parameter(ParameterSetName='CreateViaJsonFilePath', Mandatory)] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Body')] [System.String] # Path of Json file supplied to the Create operation ${JsonFilePath}, [Parameter(ParameterSetName='CreateViaJsonString', Mandatory)] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Body')] [System.String] # Json string supplied to the Create operation ${JsonString}, [Parameter()] [Alias('AzureRMContext', 'AzureCredential')] [ValidateNotNull()] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Azure')] [System.Management.Automation.PSObject] # The DefaultProfile parameter is not functional. # Use the SubscriptionId parameter when available if executing the cmdlet against a different subscription. ${DefaultProfile}, [Parameter()] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Runtime')] [System.Management.Automation.SwitchParameter] # Run the command as a job ${AsJob}, [Parameter(DontShow)] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Runtime')] [System.Management.Automation.SwitchParameter] # Wait for .NET debugger to attach ${Break}, [Parameter(DontShow)] [ValidateNotNull()] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Runtime')] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Runtime.SendAsyncStep[]] # SendAsync Pipeline Steps to be appended to the front of the pipeline ${HttpPipelineAppend}, [Parameter(DontShow)] [ValidateNotNull()] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Runtime')] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Runtime.SendAsyncStep[]] # SendAsync Pipeline Steps to be prepended to the front of the pipeline ${HttpPipelinePrepend}, [Parameter()] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Runtime')] [System.Management.Automation.SwitchParameter] # Run the command asynchronously ${NoWait}, [Parameter(DontShow)] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Runtime')] [System.Uri] # The URI for the proxy server to use ${Proxy}, [Parameter(DontShow)] [ValidateNotNull()] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Runtime')] [System.Management.Automation.PSCredential] # Credentials for a proxy server to use for the remote call ${ProxyCredential}, [Parameter(DontShow)] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Category('Runtime')] [System.Management.Automation.SwitchParameter] # Use the default credentials for the proxy ${ProxyUseDefaultCredentials} ) begin { try { $outBuffer = $null if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { $PSBoundParameters['OutBuffer'] = 1 } $parameterSet = $PSCmdlet.ParameterSetName if ($null -eq [Microsoft.WindowsAzure.Commands.Utilities.Common.AzurePSCmdlet]::PowerShellVersion) { [Microsoft.WindowsAzure.Commands.Utilities.Common.AzurePSCmdlet]::PowerShellVersion = $PSVersionTable.PSVersion.ToString() } $preTelemetryId = [Microsoft.WindowsAzure.Commands.Common.MetricHelper]::TelemetryId if ($preTelemetryId -eq '') { [Microsoft.WindowsAzure.Commands.Common.MetricHelper]::TelemetryId =(New-Guid).ToString() [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.module]::Instance.Telemetry.Invoke('Create', $MyInvocation, $parameterSet, $PSCmdlet) } else { $internalCalledCmdlets = [Microsoft.WindowsAzure.Commands.Common.MetricHelper]::InternalCalledCmdlets if ($internalCalledCmdlets -eq '') { [Microsoft.WindowsAzure.Commands.Common.MetricHelper]::InternalCalledCmdlets = $MyInvocation.MyCommand.Name } else { [Microsoft.WindowsAzure.Commands.Common.MetricHelper]::InternalCalledCmdlets += ',' + $MyInvocation.MyCommand.Name } [Microsoft.WindowsAzure.Commands.Common.MetricHelper]::TelemetryId = 'internal' } $mapping = @{ CreateByName = 'Az.ScVmm.private\New-AzScVmmVM_CreateExpanded'; CreateExpandedByName = 'Az.ScVmm.private\New-AzScVmmVM_CreateExpanded'; CreateExpandedById = 'Az.ScVmm.private\New-AzScVmmVM_CreateExpanded'; CreateViaJsonFilePath = 'Az.ScVmm.private\New-AzScVmmVM_CreateViaJsonFilePath'; CreateViaJsonString = 'Az.ScVmm.private\New-AzScVmmVM_CreateViaJsonString'; } $cmdInfo = Get-Command -Name $mapping[$parameterSet] [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet) if ($null -ne $MyInvocation.MyCommand -and [Microsoft.WindowsAzure.Commands.Utilities.Common.AzurePSCmdlet]::PromptedPreviewMessageCmdlets -notcontains $MyInvocation.MyCommand.Name -and [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Runtime.MessageAttributeHelper]::ContainsPreviewAttribute($cmdInfo, $MyInvocation)){ [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Runtime.MessageAttributeHelper]::ProcessPreviewMessageAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet) [Microsoft.WindowsAzure.Commands.Utilities.Common.AzurePSCmdlet]::PromptedPreviewMessageCmdlets.Enqueue($MyInvocation.MyCommand.Name) } $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) if ($null -eq $wrappedCmd) { $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Function) } # Custom Code Begin $MACHINE_KIND_SCVMM = "SCVMM" $CUSTOM_LOCATION_RESOURCE_TYPE = "customLocation" # Pre-Validation of the input parameters if ($parameterSet -eq 'CreateByName' -or $parameterSet -eq 'CreateExpandedByName') { if (-not $PSBoundParameters.ContainsKey('InventoryUuid') -and -not ($PSBoundParameters.ContainsKey('CloudName') -and $PSBoundParameters.ContainsKey('TemplateName'))) { throw "InventoryUuid parameter is required to enable existing virtual machine in Azure. To create a new virtual machine, specify both CloudName and TemplateName." } if ($PSBoundParameters.ContainsKey('InventoryUuid') -and (($PSBoundParameters.ContainsKey('CloudName') -or $PSBoundParameters.ContainsKey('TemplateName')))) { throw "InventoryUuid parameter cannot be used with CloudName or TemplateName parameters. To Enable existing virtual machine in Azure, specify InventoryUuid and to create a new virtual machine specify CloudName and TemplateName." } try { $vmmServerObj = Get-AzScVmmServer -Name $VmmServerName -ResourceGroupName $ResourceGroupName -SubscriptionId $SubscriptionId $vmmServerId = $vmmServerObj.Id $customLocationId = $vmmServerObj.ExtendedLocationName } catch { throw "Failed to determine VMM Server resource ARM ID for VmmServerName $VmmServerName in Resource Group $ResourceGroupName." } if ($PSBoundParameters.ContainsKey('InventoryUuid')) { try { $inventoryItemObj = Get-AzScVmmInventoryItem -VmmServerName $VmmServerName -Name $InventoryUuid -ResourceGroupName $ResourceGroupName -SubscriptionId $SubscriptionId if ($null -eq $inventoryItemObj) { throw "Inventory Item $InventoryUuid not found in Resource Group $ResourceGroupName (SubscriptionId $SubscriptionId)" } $inventoryItemId = $inventoryItemObj.Id } catch { throw $_.Exception.Message } } if ($PSBoundParameters.ContainsKey('CloudName') -and $PSBoundParameters.ContainsKey('TemplateName')) { try { $cloudObj = Get-AzScVmmCloud -Name $CloudName -ResourceGroupName $ResourceGroupName -SubscriptionId $SubscriptionId if ($null -eq $cloudObj) { throw "Cloud $CloudName not found in Resource Group $ResourceGroupName (SubscriptionId $SubscriptionId)" } $cloudId = $cloudObj.Id } catch { throw $_.Exception.Message } try { $templateObj = Get-AzScVmmVmTemplate -Name $TemplateName -ResourceGroupName $ResourceGroupName -SubscriptionId $SubscriptionId if ($null -eq $templateObj) { throw "Template $TemplateName not found in Resource Group $ResourceGroupName (SubscriptionId $SubscriptionId)" } $templateId = $templateObj.Id } catch { throw $_.Exception.Message } } if ($PSBoundParameters.ContainsKey('AvailabilitySetName') -and $AvailabilitySetName.Count -gt 0) { $AvailabilitySetListItemArray = @() foreach ($availabilitySet in $AvailabilitySetName) { try { $availabilitySetObj = Get-AzScVmmAvailabilitySet -Name $availabilitySet -ResourceGroupName $ResourceGroupName -SubscriptionId $SubscriptionId if ($null -eq $availabilitySetObj) { throw "Availability Set $availabilitySet not found in Resource Group $ResourceGroupName (SubscriptionId $SubscriptionId)" } $availabilitySetListItem = [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Models.IAvailabilitySetListItem]@{ Id = $availabilitySetObj.Id Name = $availabilitySetObj.Name } $AvailabilitySetListItemArray += $availabilitySetListItem } catch { throw $_.Exception.Message } } $AvailabilitySetList = [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Models.IAvailabilitySetListItem]$AvailabilitySetIdArray } } elseif ($parameterSet -eq 'CreateExpandedById') { if ($PSBoundParameters.ContainsKey('VmmServerId') -and -not $PSBoundParameters.ContainsKey('CustomLocationId')) { throw "CustomLocationId parameter is required when VmmServerId is specified." } if (-not $PSBoundParameters.ContainsKey('InventoryId') -and -not ($PSBoundParameters.ContainsKey('CloudId') -and $PSBoundParameters.ContainsKey('TemplateId'))) { throw "InventoryId parameter is required to enable existing virtual machine in Azure. To create a new virtual machine, specify both CloudId and TemplateId." } if ($PSBoundParameters.ContainsKey('InventoryId') -and (($PSBoundParameters.ContainsKey('CloudId') -or $PSBoundParameters.ContainsKey('TemplateId')))) { throw "InventoryId parameter cannot be used with CloudId or TemplateId parameters. To Enable existing virtual machine in Azure, specify InventoryId and to create a new virtual machine specify CloudId and TemplateId." } if ($PSBoundParameters.ContainsKey('CustomLocationId')) { $customLocationId = $CustomLocationId } if ($PSBoundParameters.ContainsKey('VmmServerId')) { $vmmServerId = $VmmServerId } if ($PSBoundParameters.ContainsKey('InventoryId')) { $inventoryItemId = $InventoryId } if ($PSBoundParameters.ContainsKey('CloudId')) { $cloudId = $CloudId } if ($PSBoundParameters.ContainsKey('TemplateId')) { $templateId = $TemplateId } if ($PSBoundParameters.ContainsKey('AvailabilitySetId') -and $AvailabilitySetId.Count -gt 0) { $AvailabilitySetListItemArray = @() foreach ($AvsetId in $AvailabilitySetId) { $availabilitySetListItem = [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Models.IAvailabilitySetListItem]@{ Id = $AvsetId } $AvailabilitySetListItemArray += $availabilitySetListItem } $AvailabilitySetList = [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.Models.IAvailabilitySetListItem]$AvailabilitySetIdArray } } # Check if Hybrid Compute machine resource exists or create a new one try { $machineObj = Az.ScVmm.internal\Get-AzScVmmMachine -Name $Name -ResourceGroupName $ResourceGroupName -SubscriptionId $SubscriptionId -ErrorAction Stop if ($null -eq $machineObj) { throw "Virtual Machine $Name not found in Resource Group $ResourceGroupName (SubscriptionId $SubscriptionId)" } if ($null -ne $machineObj.kind -and $machineObj.kind.ToLower() -ne $MACHINE_KIND_SCVMM.ToLower()) { throw "A machine already exists with kind $($Machine.kind). Machine kind cannot be updated to $MACHINE_KIND_SCVMM." } if ($Location -and ($null -ne $machineObj.location -and $machineObj.location -ne $Location)) { throw "The location of the existing Machine cannot be updated. Existing location: $($machineObj.location), Provided location: $Location." } if ($Tag) { $machineObj = Az.ScVmm.internal\Update-AzScVmmMachine -Name $Name -ResourceGroupName $ResourceGroupName -SubscriptionId $SubscriptionId -Tag $Tag if ($null -eq $machineObj) { throw "Failed to update tag for the existing machine resource." } } } catch { if ($_.Exception.Message -match "ResourceNotFound|not found") { if ($null -eq $Location) { throw "The parent Machine resource does not exist. Location is required while creating a new machine." } try { if ($Tag) { $machineObj = Az.ScVmm.internal\New-AzScVmmMachine -Name $Name ` -ResourceGroupName $ResourceGroupName ` -SubscriptionId $SubscriptionId ` -Location $Location -Tag $Tag -Kind $MACHINE_KIND_SCVMM ` -ErrorAction Stop } else { $machineObj = Az.ScVmm.internal\New-AzScVmmMachine -Name $Name ` -ResourceGroupName $ResourceGroupName ` -SubscriptionId $SubscriptionId ` -Location $Location -Kind $MACHINE_KIND_SCVMM ` -ErrorAction Stop } } catch { throw "Machine creation failed for VM '$Name'. Exception: $($_.Exception.Message)" } if ($null -eq $machineObj) { throw "Failed to create the machine resource for the new virtual machine '$Name'." } } else { throw } } # Update PSBoundParameters $PSBoundParameters['MachineId'] = $machineObj.Id foreach ($key in @('Name', 'ResourceGroupName', 'SubscriptionId', 'Tag', 'Location')) { [void]$PSBoundParameters.Remove($key) } if ($parameterSet -eq 'CreateExpandedByName' -or $parameterSet -eq 'CreateExpandedById') { # OSProfile foreach ($key in @('ComputerName', 'AdminPassword')) { if ($PSBoundParameters.ContainsKey($key)) { $PSBoundParameters["OSProfile$($key)"] = $PSBoundParameters[$key] [void]$PSBoundParameters.Remove($key) } } # HardwareProfile foreach ($key in @('CpuCount', 'DynamicMemoryMaxMb', 'DynamicMemoryMinMb', 'MemoryMb', 'DynamicMemoryEnabled','LimitCpuForMigration')) { if ($PSBoundParameters.ContainsKey($key)) { if ($key -eq 'DynamicMemoryEnabled' -or $key -eq 'LimitCpuForMigration') { $PSBoundParameters["HardwareProfile$($key)"] = "true" } else { $PSBoundParameters["HardwareProfile$($key)"] = $PSBoundParameters[$key] } [void]$PSBoundParameters.Remove($key) } } # NetworkProfile if ($PSBoundParameters.ContainsKey('NetworkInterface')) { $PSBoundParameters["NetworkProfileNetworkInterface"] = $PSBoundParameters['NetworkInterface'] [void]$PSBoundParameters.Remove('NetworkInterface') } # StorageProfile if ($PSBoundParameters.ContainsKey('Disk')) { $PSBoundParameters["StorageProfileDisk"] = $PSBoundParameters['Disk'] [void]$PSBoundParameters.Remove('Disk') } # InfrastructureProfile foreach ($key in @('CheckpointType', 'Generation')) { if ($PSBoundParameters.ContainsKey($key)) { $PSBoundParameters["InfrastructureProfile$($key)"] = $PSBoundParameters[$key] [void]$PSBoundParameters.Remove($key) } } } if ($parameterSet -eq 'CreateByName' -or $parameterSet -eq 'CreateExpandedByName' -or $parameterSet -eq 'CreateExpandedById') { $PSBoundParameters['ExtendedLocationType'] = $CUSTOM_LOCATION_RESOURCE_TYPE $PSBoundParameters['ExtendedLocationName'] = $customLocationId if ($null -ne $AvailabilitySetList -and $AvailabilitySetList.Count -gt 0) { $PSBoundParameters['AvailabilitySet'] = $AvailabilitySetList } if ($null -ne $inventoryItemId) { $PSBoundParameters["InfrastructureProfileInventoryItemId"] = $inventoryItemId } else { $PSBoundParameters["InfrastructureProfileCloudId"] = $cloudId $PSBoundParameters["InfrastructureProfileTemplateId"] = $templateId $PSBoundParameters["InfrastructureProfileVmmServerId"] = $vmmServerId } # Extra Parameters cleanup from $PSBoundParameters foreach ($key in @('VmmServerName', 'InventoryUuid', 'CloudName', 'TemplateName', 'AvailabilitySetName', 'VmmServerId', 'CustomLocationId', 'InventoryId', 'CloudId', 'TemplateId', 'AvailabilitySetId')) { if ($PSBoundParameters.ContainsKey($key)) { [void]$PSBoundParameters.Remove($key) } } } # Custom Code End $scriptCmd = {& $wrappedCmd @PSBoundParameters} $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) $steppablePipeline.Begin($PSCmdlet) } catch { [Microsoft.WindowsAzure.Commands.Common.MetricHelper]::ClearTelemetryContext() throw } } process { try { $steppablePipeline.Process($_) } catch { [Microsoft.WindowsAzure.Commands.Common.MetricHelper]::ClearTelemetryContext() throw } finally { $backupTelemetryId = [Microsoft.WindowsAzure.Commands.Common.MetricHelper]::TelemetryId $backupInternalCalledCmdlets = [Microsoft.WindowsAzure.Commands.Common.MetricHelper]::InternalCalledCmdlets [Microsoft.WindowsAzure.Commands.Common.MetricHelper]::ClearTelemetryContext() } } end { try { $steppablePipeline.End() [Microsoft.WindowsAzure.Commands.Common.MetricHelper]::TelemetryId = $backupTelemetryId [Microsoft.WindowsAzure.Commands.Common.MetricHelper]::InternalCalledCmdlets = $backupInternalCalledCmdlets if ($preTelemetryId -eq '') { [Microsoft.Azure.PowerShell.Cmdlets.ScVmm.module]::Instance.Telemetry.Invoke('Send', $MyInvocation, $parameterSet, $PSCmdlet) [Microsoft.WindowsAzure.Commands.Common.MetricHelper]::ClearTelemetryContext() } [Microsoft.WindowsAzure.Commands.Common.MetricHelper]::TelemetryId = $preTelemetryId } catch { [Microsoft.WindowsAzure.Commands.Common.MetricHelper]::ClearTelemetryContext() throw } } } # SIG # Begin signature block # MIIoOQYJKoZIhvcNAQcCoIIoKjCCKCYCAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCAk5EfUlHH0LP+q # 6D7y9RHP36nf/sD2NHfKjiNl4r5ZraCCDYUwggYDMIID66ADAgECAhMzAAAEhJji # EuB4ozFdAAAAAASEMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYD # VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy # b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25p # bmcgUENBIDIwMTEwHhcNMjUwNjE5MTgyMTM1WhcNMjYwNjE3MTgyMTM1WjB0MQsw # CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u # ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMR4wHAYDVQQDExVNaWNy # b3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB # AQDtekqMKDnzfsyc1T1QpHfFtr+rkir8ldzLPKmMXbRDouVXAsvBfd6E82tPj4Yz # aSluGDQoX3NpMKooKeVFjjNRq37yyT/h1QTLMB8dpmsZ/70UM+U/sYxvt1PWWxLj # MNIXqzB8PjG6i7H2YFgk4YOhfGSekvnzW13dLAtfjD0wiwREPvCNlilRz7XoFde5 # KO01eFiWeteh48qUOqUaAkIznC4XB3sFd1LWUmupXHK05QfJSmnei9qZJBYTt8Zh # ArGDh7nQn+Y1jOA3oBiCUJ4n1CMaWdDhrgdMuu026oWAbfC3prqkUn8LWp28H+2S # LetNG5KQZZwvy3Zcn7+PQGl5AgMBAAGjggGCMIIBfjAfBgNVHSUEGDAWBgorBgEE # AYI3TAgBBggrBgEFBQcDAzAdBgNVHQ4EFgQUBN/0b6Fh6nMdE4FAxYG9kWCpbYUw # VAYDVR0RBE0wS6RJMEcxLTArBgNVBAsTJE1pY3Jvc29mdCBJcmVsYW5kIE9wZXJh # dGlvbnMgTGltaXRlZDEWMBQGA1UEBRMNMjMwMDEyKzUwNTM2MjAfBgNVHSMEGDAW # gBRIbmTlUAXTgqoXNzcitW2oynUClTBUBgNVHR8ETTBLMEmgR6BFhkNodHRwOi8v # d3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NybC9NaWNDb2RTaWdQQ0EyMDExXzIw # MTEtMDctMDguY3JsMGEGCCsGAQUFBwEBBFUwUzBRBggrBgEFBQcwAoZFaHR0cDov # L3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jZXJ0cy9NaWNDb2RTaWdQQ0EyMDEx # XzIwMTEtMDctMDguY3J0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQADggIB # AGLQps1XU4RTcoDIDLP6QG3NnRE3p/WSMp61Cs8Z+JUv3xJWGtBzYmCINmHVFv6i # 8pYF/e79FNK6P1oKjduxqHSicBdg8Mj0k8kDFA/0eU26bPBRQUIaiWrhsDOrXWdL # m7Zmu516oQoUWcINs4jBfjDEVV4bmgQYfe+4/MUJwQJ9h6mfE+kcCP4HlP4ChIQB # UHoSymakcTBvZw+Qst7sbdt5KnQKkSEN01CzPG1awClCI6zLKf/vKIwnqHw/+Wvc # Ar7gwKlWNmLwTNi807r9rWsXQep1Q8YMkIuGmZ0a1qCd3GuOkSRznz2/0ojeZVYh # ZyohCQi1Bs+xfRkv/fy0HfV3mNyO22dFUvHzBZgqE5FbGjmUnrSr1x8lCrK+s4A+ # bOGp2IejOphWoZEPGOco/HEznZ5Lk6w6W+E2Jy3PHoFE0Y8TtkSE4/80Y2lBJhLj # 27d8ueJ8IdQhSpL/WzTjjnuYH7Dx5o9pWdIGSaFNYuSqOYxrVW7N4AEQVRDZeqDc # fqPG3O6r5SNsxXbd71DCIQURtUKss53ON+vrlV0rjiKBIdwvMNLQ9zK0jy77owDy # XXoYkQxakN2uFIBO1UNAvCYXjs4rw3SRmBX9qiZ5ENxcn/pLMkiyb68QdwHUXz+1 # fI6ea3/jjpNPz6Dlc/RMcXIWeMMkhup/XEbwu73U+uz/MIIHejCCBWKgAwIBAgIK # YQ6Q0gAAAAAAAzANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UEBhMCVVMxEzARBgNV # BAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jv # c29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2VydGlm # aWNhdGUgQXV0aG9yaXR5IDIwMTEwHhcNMTEwNzA4MjA1OTA5WhcNMjYwNzA4MjEw # OTA5WjB+MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UE # BxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSgwJgYD # VQQDEx9NaWNyb3NvZnQgQ29kZSBTaWduaW5nIFBDQSAyMDExMIICIjANBgkqhkiG # 9w0BAQEFAAOCAg8AMIICCgKCAgEAq/D6chAcLq3YbqqCEE00uvK2WCGfQhsqa+la # UKq4BjgaBEm6f8MMHt03a8YS2AvwOMKZBrDIOdUBFDFC04kNeWSHfpRgJGyvnkmc # 6Whe0t+bU7IKLMOv2akrrnoJr9eWWcpgGgXpZnboMlImEi/nqwhQz7NEt13YxC4D # dato88tt8zpcoRb0RrrgOGSsbmQ1eKagYw8t00CT+OPeBw3VXHmlSSnnDb6gE3e+ # lD3v++MrWhAfTVYoonpy4BI6t0le2O3tQ5GD2Xuye4Yb2T6xjF3oiU+EGvKhL1nk # kDstrjNYxbc+/jLTswM9sbKvkjh+0p2ALPVOVpEhNSXDOW5kf1O6nA+tGSOEy/S6 # A4aN91/w0FK/jJSHvMAhdCVfGCi2zCcoOCWYOUo2z3yxkq4cI6epZuxhH2rhKEmd # X4jiJV3TIUs+UsS1Vz8kA/DRelsv1SPjcF0PUUZ3s/gA4bysAoJf28AVs70b1FVL # 5zmhD+kjSbwYuER8ReTBw3J64HLnJN+/RpnF78IcV9uDjexNSTCnq47f7Fufr/zd # sGbiwZeBe+3W7UvnSSmnEyimp31ngOaKYnhfsi+E11ecXL93KCjx7W3DKI8sj0A3 # T8HhhUSJxAlMxdSlQy90lfdu+HggWCwTXWCVmj5PM4TasIgX3p5O9JawvEagbJjS # 4NaIjAsCAwEAAaOCAe0wggHpMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBRI # bmTlUAXTgqoXNzcitW2oynUClTAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTAL # BgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBRyLToCMZBD # uRQFTuHqp8cx0SOJNDBaBgNVHR8EUzBRME+gTaBLhklodHRwOi8vY3JsLm1pY3Jv # c29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNSb29DZXJBdXQyMDExXzIwMTFf # MDNfMjIuY3JsMF4GCCsGAQUFBwEBBFIwUDBOBggrBgEFBQcwAoZCaHR0cDovL3d3 # dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9NaWNSb29DZXJBdXQyMDExXzIwMTFf # MDNfMjIuY3J0MIGfBgNVHSAEgZcwgZQwgZEGCSsGAQQBgjcuAzCBgzA/BggrBgEF # BQcCARYzaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9kb2NzL3ByaW1h # cnljcHMuaHRtMEAGCCsGAQUFBwICMDQeMiAdAEwAZQBnAGEAbABfAHAAbwBsAGkA # YwB5AF8AcwB0AGEAdABlAG0AZQBuAHQALiAdMA0GCSqGSIb3DQEBCwUAA4ICAQBn # 8oalmOBUeRou09h0ZyKbC5YR4WOSmUKWfdJ5DJDBZV8uLD74w3LRbYP+vj/oCso7 # v0epo/Np22O/IjWll11lhJB9i0ZQVdgMknzSGksc8zxCi1LQsP1r4z4HLimb5j0b # pdS1HXeUOeLpZMlEPXh6I/MTfaaQdION9MsmAkYqwooQu6SpBQyb7Wj6aC6VoCo/ # KmtYSWMfCWluWpiW5IP0wI/zRive/DvQvTXvbiWu5a8n7dDd8w6vmSiXmE0OPQvy # CInWH8MyGOLwxS3OW560STkKxgrCxq2u5bLZ2xWIUUVYODJxJxp/sfQn+N4sOiBp # mLJZiWhub6e3dMNABQamASooPoI/E01mC8CzTfXhj38cbxV9Rad25UAqZaPDXVJi # hsMdYzaXht/a8/jyFqGaJ+HNpZfQ7l1jQeNbB5yHPgZ3BtEGsXUfFL5hYbXw3MYb # BL7fQccOKO7eZS/sl/ahXJbYANahRr1Z85elCUtIEJmAH9AAKcWxm6U/RXceNcbS # oqKfenoi+kiVH6v7RyOA9Z74v2u3S5fi63V4GuzqN5l5GEv/1rMjaHXmr/r8i+sL # gOppO6/8MO0ETI7f33VtY5E90Z1WTk+/gFcioXgRMiF670EKsT/7qMykXcGhiJtX # cVZOSEXAQsmbdlsKgEhr/Xmfwb1tbWrJUnMTDXpQzTGCGgowghoGAgEBMIGVMH4x # CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt # b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01p # Y3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBIDIwMTECEzMAAASEmOIS4HijMV0AAAAA # BIQwDQYJYIZIAWUDBAIBBQCgga4wGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQw # HAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEIFUz # 6FhNIWwqCxcxK3yQW4h2l9XWwQbbqsGbagUFPD4+MEIGCisGAQQBgjcCAQwxNDAy # oBSAEgBNAGkAYwByAG8AcwBvAGYAdKEagBhodHRwOi8vd3d3Lm1pY3Jvc29mdC5j # b20wDQYJKoZIhvcNAQEBBQAEggEASSuiKHkYeHNbSmz/ljbtyjT8QqY/lqwvo9lm # 7Em+GqZATSPI9PDx+FG02J3zsn/Qhr2A43KfZFYKU/phq65y6o7el9eCvMQQ/5cg # c1kOFaXhcfgBpkgLGqWoelDcFy+cW/YRdDsMqFvC2oahCzW0Ho7fxra8/ED629w+ # LAlErWiCbNUusQoWFsrrc8BUj7RHsEKlNB75ofZMQs/M2wwjg1jMmOCaG5YfwuIa # FAZBvQLF1p3lgb3TVxO83Wqup7ZzFhRpdyhEvFIo7eaKeKGtxZH+znsIiGE5Sigm # agIowFmbRPgmYXknPmpg0kNE0pp377J4rTjQyLJ5CzsTdaTFrqGCF5QwgheQBgor # BgEEAYI3AwMBMYIXgDCCF3wGCSqGSIb3DQEHAqCCF20wghdpAgEDMQ8wDQYJYIZI # AWUDBAIBBQAwggFSBgsqhkiG9w0BCRABBKCCAUEEggE9MIIBOQIBAQYKKwYBBAGE # WQoDATAxMA0GCWCGSAFlAwQCAQUABCAmDHkV75UKoYx7CPyVp8psjXuFo+xlUQbD # D6ucm7kEtwIGaNsOb624GBMyMDI1MTAwOTEyNDUwOS45OTJaMASAAgH0oIHRpIHO # MIHLMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH # UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSUwIwYDVQQL # ExxNaWNyb3NvZnQgQW1lcmljYSBPcGVyYXRpb25zMScwJQYDVQQLEx5uU2hpZWxk # IFRTUyBFU046RjAwMi0wNUUwLUQ5NDcxJTAjBgNVBAMTHE1pY3Jvc29mdCBUaW1l # LVN0YW1wIFNlcnZpY2WgghHqMIIHIDCCBQigAwIBAgITMwAAAgU8dWyCRIfN/gAB # AAACBTANBgkqhkiG9w0BAQsFADB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2Fz # aGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENv # cnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAx # MDAeFw0yNTAxMzAxOTQyNDlaFw0yNjA0MjIxOTQyNDlaMIHLMQswCQYDVQQGEwJV # UzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UE # ChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSUwIwYDVQQLExxNaWNyb3NvZnQgQW1l # cmljYSBPcGVyYXRpb25zMScwJQYDVQQLEx5uU2hpZWxkIFRTUyBFU046RjAwMi0w # NUUwLUQ5NDcxJTAjBgNVBAMTHE1pY3Jvc29mdCBUaW1lLVN0YW1wIFNlcnZpY2Uw # ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCSkvLfd7gF1r2wGdy85CFY # XHUC8ywEyD4LRLv0WYEXeeZ0u5YuK7p2cXVzQmZPOHTN8TWqG2SPlUb+7PldzFDD # AlR3vU8piOjmhu9rHW43M2dbor9jl9gluhzwUd2SciVGa7f9t67tM3KFKRSMXFtH # KF3KwBB7aVo+b1qy5p9DWlo2N5FGrBqHMEVlNyzreHYoDLL+m8fSsqMu/iYUqxzK # 5F4S7IY5NemAB8B+A3QgwVIi64KJIfeKZUeiWKCTf4odUgP3AQilxh48P6z7AT4I # A0dMEtKhYLFs4W/KNDMsYr7KpQPKVCcC5E8uDHdKewubyzenkTxy4ff1N3g8yho5 # Pi9BfjR0VytrkmpDfep8JPwcb4BNOIXOo1pfdHZ8EvnR7JFZFQiqpMZFlO5CAuTY # H8ujc5PUHlaMAJ8NEa9TFJTOSBrB7PRgeh/6NJ2xu9yxPh/kVN9BGss93MC6Ujpo # xeM4x70bwbwiK8SNHIO8D8cql7VSevUYbjN4NogFFwhBClhodE/zeGPq6y6ixD4z # 65IHY3zwFQbBVX/w+L/VHNn/BMGs2PGHnlRjO/Kk8NIpN4shkFQqA1fM08frrDSN # EY9VKDtpsUpAF51Y1oQ6tJhWM1d3neCXh6b/6N+XeHORCwnY83K+pFMMhg8isXQb # 6KRl65kg8XYBd4JwkbKoVQIDAQABo4IBSTCCAUUwHQYDVR0OBBYEFHR6Wrs27b6+ # yJ3bEZ9o5NdL1bLwMB8GA1UdIwQYMBaAFJ+nFV0AXmJdg/Tl0mWnG1M1GelyMF8G # A1UdHwRYMFYwVKBSoFCGTmh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMv # Y3JsL01pY3Jvc29mdCUyMFRpbWUtU3RhbXAlMjBQQ0ElMjAyMDEwKDEpLmNybDBs # BggrBgEFBQcBAQRgMF4wXAYIKwYBBQUHMAKGUGh0dHA6Ly93d3cubWljcm9zb2Z0 # LmNvbS9wa2lvcHMvY2VydHMvTWljcm9zb2Z0JTIwVGltZS1TdGFtcCUyMFBDQSUy # MDIwMTAoMSkuY3J0MAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUH # AwgwDgYDVR0PAQH/BAQDAgeAMA0GCSqGSIb3DQEBCwUAA4ICAQAOuxk47b1i75V8 # 1Tx6xo10xNIr4zZxYVfkF5TFq2kndPHgzVyLnssw/HKkEZRCgZVpkKEJ6Y4jvG5t # ugMi+Wjt7hUMSipk+RpB5gFQvh1xmAEL2flegzTWEsnj0wrESplI5Z3vgf2eGXAr # /RcqGjSpouHbD2HY9Y3F0Ol6FRDCV/HEGKRHzn2M5rQpFGSjacT4DkqVYmem/ArO # fSvVojnKEIW914UxGtuhJSr9jOo5RqTX7GIqbtvN7zhWld+i3XxdhdNcflQz9Yho # FqQexBenoIRgAPAtwH68xczr9LMC3l9ALEpnsvO0RiKPXF4l22/OfcFffaphnl/T # DwkiJfxOyAMfUF3xI9+3izT1WX2CFs2RaOAq3dcohyJw+xRG0E8wkCHqkV57BbUB # EzLX8L9lGJ1DoxYNpoDX7iQzJ9Qdkypi5fv773E3Ch8A+toxeFp6FifQZyCc8IcI # BlHyak6MbT6YTVQNgQ/h8FF+S5OqP7CECFvIH2Kt2P0GlOu9C0BfashnTjodmtZF # ZsptUvirk/2HOLLjBiMjDwJsQAFAzJuz4ZtTyorrvER10Gl/mbmViHqhvNACfTzP # iLfjDgyvp9s7/bHu/CalKmeiJULGjh/lwAj5319pggsGJqbhJ4FbFc+oU5zffbm/ # rKjVZ8kxND3im10Qp41n2t/qpyP6ETCCB3EwggVZoAMCAQICEzMAAAAVxedrngKb # SZkAAAAAABUwDQYJKoZIhvcNAQELBQAwgYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQI # EwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3Nv # ZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBSb290IENlcnRpZmlj # YXRlIEF1dGhvcml0eSAyMDEwMB4XDTIxMDkzMDE4MjIyNVoXDTMwMDkzMDE4MzIy # NVowfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcT # B1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UE # AxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAwggIiMA0GCSqGSIb3DQEB # AQUAA4ICDwAwggIKAoICAQDk4aZM57RyIQt5osvXJHm9DtWC0/3unAcH0qlsTnXI # yjVX9gF/bErg4r25PhdgM/9cT8dm95VTcVrifkpa/rg2Z4VGIwy1jRPPdzLAEBjo # YH1qUoNEt6aORmsHFPPFdvWGUNzBRMhxXFExN6AKOG6N7dcP2CZTfDlhAnrEqv1y # aa8dq6z2Nr41JmTamDu6GnszrYBbfowQHJ1S/rboYiXcag/PXfT+jlPP1uyFVk3v # 3byNpOORj7I5LFGc6XBpDco2LXCOMcg1KL3jtIckw+DJj361VI/c+gVVmG1oO5pG # ve2krnopN6zL64NF50ZuyjLVwIYwXE8s4mKyzbnijYjklqwBSru+cakXW2dg3viS # kR4dPf0gz3N9QZpGdc3EXzTdEonW/aUgfX782Z5F37ZyL9t9X4C626p+Nuw2TPYr # bqgSUei/BQOj0XOmTTd0lBw0gg/wEPK3Rxjtp+iZfD9M269ewvPV2HM9Q07BMzlM # jgK8QmguEOqEUUbi0b1qGFphAXPKZ6Je1yh2AuIzGHLXpyDwwvoSCtdjbwzJNmSL # W6CmgyFdXzB0kZSU2LlQ+QuJYfM2BjUYhEfb3BvR/bLUHMVr9lxSUV0S2yW6r1AF # emzFER1y7435UsSFF5PAPBXbGjfHCBUYP3irRbb1Hode2o+eFnJpxq57t7c+auIu # rQIDAQABo4IB3TCCAdkwEgYJKwYBBAGCNxUBBAUCAwEAATAjBgkrBgEEAYI3FQIE # FgQUKqdS/mTEmr6CkTxGNSnPEP8vBO4wHQYDVR0OBBYEFJ+nFV0AXmJdg/Tl0mWn # G1M1GelyMFwGA1UdIARVMFMwUQYMKwYBBAGCN0yDfQEBMEEwPwYIKwYBBQUHAgEW # M2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvRG9jcy9SZXBvc2l0b3J5 # Lmh0bTATBgNVHSUEDDAKBggrBgEFBQcDCDAZBgkrBgEEAYI3FAIEDB4KAFMAdQBi # AEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBTV # 9lbLj+iiXGJo0T2UkFvXzpoYxDBWBgNVHR8ETzBNMEugSaBHhkVodHRwOi8vY3Js # Lm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNSb29DZXJBdXRfMjAx # MC0wNi0yMy5jcmwwWgYIKwYBBQUHAQEETjBMMEoGCCsGAQUFBzAChj5odHRwOi8v # d3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1Jvb0NlckF1dF8yMDEwLTA2 # LTIzLmNydDANBgkqhkiG9w0BAQsFAAOCAgEAnVV9/Cqt4SwfZwExJFvhnnJL/Klv # 6lwUtj5OR2R4sQaTlz0xM7U518JxNj/aZGx80HU5bbsPMeTCj/ts0aGUGCLu6WZn # OlNN3Zi6th542DYunKmCVgADsAW+iehp4LoJ7nvfam++Kctu2D9IdQHZGN5tggz1 # bSNU5HhTdSRXud2f8449xvNo32X2pFaq95W2KFUn0CS9QKC/GbYSEhFdPSfgQJY4 # rPf5KYnDvBewVIVCs/wMnosZiefwC2qBwoEZQhlSdYo2wh3DYXMuLGt7bj8sCXgU # 6ZGyqVvfSaN0DLzskYDSPeZKPmY7T7uG+jIa2Zb0j/aRAfbOxnT99kxybxCrdTDF # NLB62FD+CljdQDzHVG2dY3RILLFORy3BFARxv2T5JL5zbcqOCb2zAVdJVGTZc9d/ # HltEAY5aGZFrDZ+kKNxnGSgkujhLmm77IVRrakURR6nxt67I6IleT53S0Ex2tVdU # CbFpAUR+fKFhbHP+CrvsQWY9af3LwUFJfn6Tvsv4O+S3Fb+0zj6lMVGEvL8CwYKi # excdFYmNcP7ntdAoGokLjzbaukz5m/8K6TT4JDVnK+ANuOaMmdbhIurwJ0I9JZTm # dHRbatGePu1+oDEzfbzL6Xu/OHBE0ZDxyKs6ijoIYn/ZcGNTTY3ugm2lBRDBcQZq # ELQdVTNYs6FwZvKhggNNMIICNQIBATCB+aGB0aSBzjCByzELMAkGA1UEBhMCVVMx # EzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoT # FU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjElMCMGA1UECxMcTWljcm9zb2Z0IEFtZXJp # Y2EgT3BlcmF0aW9uczEnMCUGA1UECxMeblNoaWVsZCBUU1MgRVNOOkYwMDItMDVF # MC1EOTQ3MSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBTZXJ2aWNloiMK # AQEwBwYFKw4DAhoDFQDVsH9p1tJn+krwCMvqOhVvXrbetKCBgzCBgKR+MHwxCzAJ # BgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25k # MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jv # c29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwMA0GCSqGSIb3DQEBCwUAAgUA7JIRLTAi # GA8yMDI1MTAwOTEwNDcwOVoYDzIwMjUxMDEwMTA0NzA5WjB0MDoGCisGAQQBhFkK # BAExLDAqMAoCBQDskhEtAgEAMAcCAQACAjDfMAcCAQACAhTgMAoCBQDsk2KtAgEA # MDYGCisGAQQBhFkKBAIxKDAmMAwGCisGAQQBhFkKAwKgCjAIAgEAAgMHoSChCjAI # AgEAAgMBhqAwDQYJKoZIhvcNAQELBQADggEBACIdUGiks7B0HUHthu81WCBs9UMR # Rfwq8Sr2RIQrQYMQJHHn/GO2Cpms86oWkIxk3eWauiWAzrgoQwn0AIk9PWpafwmA # mSIgcV0UhgUxLdiLDj5yYhR8+bbgh+Q80/yBNVYlGyvTC3SxHD7hxqiuQP7LaiaG # NJTJDYE+DIjQ9hOQYScQaYmkeFuLsObBhnce9b7MWZ04EuvvrFNtQ486BrlvUSfX # bIZTOdCuEF1g5Mqn4cMahsUEL0RmRq3p7xE8e36kgvxilJli9SLk5WMVsAGeAox/ # FDUQb4Zs+Gbh4UwUE/JxmeMGoq21Q1XjO9bKOT57t/THzEbe4gDl9zOvVBgxggQN # MIIECQIBATCBkzB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQ # MA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u # MSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMAITMwAAAgU8 # dWyCRIfN/gABAAACBTANBglghkgBZQMEAgEFAKCCAUowGgYJKoZIhvcNAQkDMQ0G # CyqGSIb3DQEJEAEEMC8GCSqGSIb3DQEJBDEiBCD8RYwGaHTs1cB6GgSgL860hCnc # 68uBUYheVIXj0Rxf+zCB+gYLKoZIhvcNAQkQAi8xgeowgecwgeQwgb0EIIANAz3c # eY0umhdWLR2sJpq0OPqtJDTAYRmjHVkwEW9IMIGYMIGApH4wfDELMAkGA1UEBhMC # VVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNV # BAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRp # bWUtU3RhbXAgUENBIDIwMTACEzMAAAIFPHVsgkSHzf4AAQAAAgUwIgQgpqE0Qo/C # GgWgbAcY2HJ4+ZXqyjwZEwerdQ/YMmMAChEwDQYJKoZIhvcNAQELBQAEggIAFiJc # bl8RCkXrLFGSloOZ+R4xM0FJ1xDoBcBlbsd226XOci+EZDGx66udYPJrVUxlDrk6 # xlc5dIh8llBOKwypRf5jyDUQS/1zVyLApxD7EyfoaxFHXQcVa9pomYyHM6QrVWw2 # qyhmDPopFwDfV5r0kMQXTsgk7I/UY3XdI4q50M/9lGlCAm6YvaEvuGBk8C9zqp4b # VBpDY7psvgy9WD4v9oOfEz7xoFWsaU+omK4XV8QM2ehXSRbJ1Y5iRDsVA2AQqMT6 # 3ElSVysBKu+m8I1rDwfGctX1HNeYi/ZCC/UGSNYZcWwsXrPp3JhiJT4ot97S0xaA # 8CjZ0Pwik0I9bwtLusshN6AXMwT2oa6A77HBCVkplKiBKNIx4VU6QZXD82cqFPY/ # qAkbfeToqQ4b0yltAIo7k1Dh4Lh8mfdYZhUtC0civW/0jZNKaBSbvVFZw2GquHsa # cem3ozQk8MxqFpg4e/ZYbA9ZO3NQWolFN8g2IKgNdSTtmLwqnuBzKz70sWL7VAIv # w5Oplf14LvR/yiNj8M1AEON1mqVgQZd8kdYNnk4wc3H66xCpTmMtvEm5T7dIZdpQ # Y8oyJ2TzA8lrF2WbVaNsshrvn3EBq+Vp3uwiZLWMtds0Xnk/wFVOZ6/4rneegwCJ # TghjOrIOp5iEL19MnAo6fBHCIyL1Qsf10O6ahwc= # SIG # End signature block |