Get-AzClassicServiceInfo.ps1
function Get-AzClassicServiceInfo { <# .SYNOPSIS Lists Production deployment Cloud Service basic properties from the current Azure Subscription Properties returned: ServiceName, Location, Label, Status, InstanceCount. .PARAMETER ServiceName The Classic Service to query .PARAMETER IncludeStagingSlot Query the Staging slot in addition to the Production slot .EXAMPLE Get-AzClassicServiceInfo -ServiceName MyCloudService ServiceName : MyCloudService Slot : Production Location : centralus Label : 02282019175704-9DF21705877A41D49D3D7792A9891C780WebSvc-WebSvc Status : Running DeploymentName : 1dc4c1b7e75046a7b42af7cc8838012e This command shows details about the available services in the subscription passed at the command line #> [CmdletBinding(DefaultParameterSetName = 'SubscriptionName')] [OutputType('Microsoft.Azure.AzureServiceInfo')] param( [parameter(ValueFromPipeline, ValueFromPipelineByPropertyName, Position = 1)] [Alias('ResourceName', 'Name')] [string[]]$ServiceName, [parameter()] ## Reports the Staging slot in addition to the Production one [switch]$IncludeStagingSlot ) process { if ([string]::IsNullOrWhiteSpace($ServiceName)) { $ServiceName = Get-AzResource -ResourceType 'Microsoft.ClassicCompute/domainNames' | Select-Object -ExpandProperty 'Name' } foreach ($service in $ServiceName) { $outObj = $null $resource = $null $resource = Get-AzResource -Name $service -ResourceType 'Microsoft.ClassicCompute/domainNames' $location = Get-AzLocation | Where-Object 'Location' -eq $resource.Location | Select-Object -ExpandProperty 'DisplayName' $outObj = Get-AzResource -ResourceType "Microsoft.ClassicCompute/domainNames/deploymentSlots/production" ` -Name $resource.Name -ResourceGroupName $resource.ResourceGroupName ` -ErrorAction 'SilentlyContinue' -PipelineVariable 'deployment' -ApiVersion '2018-06-01' | Select-Object @{l = 'ServiceName'; e = { $service } }, ` @{l = 'Slot'; e = { 'Production' } }, ` @{l = 'Location'; e = { $location } }, ` @{l = 'Label'; e = { $deployment.Properties.deploymentLabel } }, ` @{l = 'Status'; e = { $deployment.Properties.Status } }, ` @{l = 'DeploymentName'; e = { $deployment.Properties.DeploymentName } }#, ` # @{l = 'InstanceCount'; e = { # (Get-AzResource -ResourceType 'Microsoft.ClassicCompute/domainNames/deploymentslots/production/roles' ` # -Name $resource.Name -ResourceGroupName $resource.ResourceGroupName -ApiVersion '2018-06-01').Sku.Capacity} # } if ($outObj) { $outObj.PSObject.TypeNames.Insert(0, 'Microsoft.Azure.AzureServiceInfo') $outObj } if ($IncludeStagingSlot) { $outObj = $null $outObj = Get-AzResource -ResourceType "Microsoft.ClassicCompute/domainNames/deploymentSlots/staging" ` -Name $resource.Name -ResourceGroupName $resource.ResourceGroupName ` -ErrorAction 'SilentlyContinue' -PipelineVariable 'deployment' -ApiVersion '2018-06-01' | Select-Object @{l = 'ServiceName'; e = { $service } }, ` @{l = 'Slot'; e = { 'Staging' } }, ` @{l = 'Location'; e = { $location } }, ` @{l = 'Label'; e = { $deployment.Properties.deploymentLabel } }, ` @{l = 'Status'; e = { $deployment.Properties.Status } }, ` @{l = 'DeploymentName'; e = { $deployment.Properties.DeploymentName } }#, ` # @{l = 'InstanceCount'; e = { # (Get-AzResource -ResourceType 'Microsoft.ClassicCompute/domainNames/deploymentslots/production/roles' ` # -Name $resource.Name -ResourceGroupName $resource.ResourceGroupName -ApiVersion '2018-06-01').Sku.Capacity} # } if ($outObj) { $outObj.PSObject.TypeNames.Insert(0, 'Microsoft.Azure.AzureServiceInfo') $outObj } } } } } |