From 7a196654202ebf0b7338efa1374191fa6019cad6 Mon Sep 17 00:00:00 2001 From: Julian Hayward Date: Mon, 4 Sep 2023 22:00:29 +0200 Subject: [PATCH] 1.1.78 --- pwsh/module/build/AzAPICall.zip | Bin 19516 -> 19654 bytes pwsh/module/build/AzAPICall/AzAPICall.psd1 | 2 +- .../functions/AzAPICallFunctions.ps1 | 44 +++++++++++------- pwsh/module/dev/AzAPICall/AzAPICall.psd1 | 2 +- .../functions/getAzAPICallVersion.ps1 | 2 +- .../dev/AzAPICall/functions/initAzAPICall.ps1 | 36 ++++++++------ .../AzAPICall/functions/testSubscription.ps1 | 6 +-- 7 files changed, 54 insertions(+), 38 deletions(-) diff --git a/pwsh/module/build/AzAPICall.zip b/pwsh/module/build/AzAPICall.zip index 58e3313da565547b63cb128b4a2780849252e77e..75303b0b9e0ec1d40316f5bf05c6dd29be537fef 100644 GIT binary patch delta 19128 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 H00000{LBsk delta 18978 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 - Logging -preventWriteOutput $true -logMessage " Context related parameters: -SubscriptionId4AzContext=='$SubscriptionId4AzContext'; -TenantId4AzContext=='$TenantId4AzContext'; -SkipAzContextSubscriptionValidation=='$($SkipAzContextSubscriptionValidation)'" $newAzContextSet = $false - if ($SubscriptionId4AzContext -match ('^(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}){0,1}$')) { + if ($SubscriptionId4AzContext -and $SubscriptionId4AzContext -match ('^(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}){0,1}$')) { if ($AzAPICallConfiguration['checkContext'].Subscription.Id -ne $SubscriptionId4AzContext) { try { if ($TenantId4AzContext -and $TenantId4AzContext -match ('^(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}){0,1}$')) { @@ -1893,6 +1894,7 @@ function initAzAPICall { $AzAPICallConfiguration['checkContext'] = Get-AzContext -ErrorAction Stop } else { + Logging -preventWriteOutput $true -logMessage " Az context is already set to TenantId: '$TenantId4AzContext'" if ($SkipAzContextSubscriptionValidation -eq $false) { testSubscription -SubscriptionId4Test $SubscriptionId4AzContext -AzAPICallConfiguration $AzAPICallConfiguration } @@ -1924,6 +1926,7 @@ function initAzAPICall { } } else { + Logging -preventWriteOutput $true -logMessage " Az context is already set to SubscriptionId: '$SubscriptionId4AzContext'" if ($SkipAzContextSubscriptionValidation -eq $false) { testSubscription -SubscriptionId4Test $SubscriptionId4AzContext -AzAPICallConfiguration $AzAPICallConfiguration } @@ -1943,10 +1946,10 @@ function initAzAPICall { } } else { + Logging -preventWriteOutput $true -logMessage " Az context is already set to TenantId: '$TenantId4AzContext'" if (-not [string]::IsNullOrWhiteSpace($AzAPICallConfiguration['checkContext'].Subscription.Id) -and $SkipAzContextSubscriptionValidation -eq $false) { testSubscription -SubscriptionId4Test $AzAPICallConfiguration['checkContext'].Subscription.Id -AzAPICallConfiguration $AzAPICallConfiguration } - Logging -preventWriteOutput $true -logMessage " Stay with current Az context: Tenant:'$($AzAPICallConfiguration['checkContext'].Tenant.Id)' Subscription:'$($AzAPICallConfiguration['checkContext'].Subscription.Name) ($($AzAPICallConfiguration['checkContext'].Subscription.Id))'" } } catch { @@ -1957,14 +1960,14 @@ function initAzAPICall { Logging -preventWriteOutput $true -logMessage " New Az context: Tenant:'$($AzAPICallConfiguration['checkContext'].Tenant.Id)' Subscription:'$($AzAPICallConfiguration['checkContext'].Subscription.Name) ($($AzAPICallConfiguration['checkContext'].Subscription.Id))'" } else { - Logging -preventWriteOutput $true -logMessage " Stay with current Az context (`$SkipAzContextSubscriptionValidation==$SkipAzContextSubscriptionValidation): $($AzAPICallConfiguration['checkContext'].Subscription.Name) ($($AzAPICallConfiguration['checkContext'].Subscription.Id))" + Logging -preventWriteOutput $true -logMessage " Stay with current Az context: Tenant:'$($AzAPICallConfiguration['checkContext'].Tenant.Id)' Subscription:'$($AzAPICallConfiguration['checkContext'].Subscription.Name) ($($AzAPICallConfiguration['checkContext'].Subscription.Id))'" } } elseif (-not [string]::IsNullOrWhiteSpace($AzAPICallConfiguration['checkContext'].Subscription.Id) -and $SkipAzContextSubscriptionValidation -eq $false) { testSubscription -SubscriptionId4Test $AzAPICallConfiguration['checkContext'].Subscription.Id -AzAPICallConfiguration $AzAPICallConfiguration } else { - Logging -preventWriteOutput $true -logMessage " Stay with current Az context (`$SkipAzContextSubscriptionValidation==$SkipAzContextSubscriptionValidation): $($AzAPICallConfiguration['checkContext'].Subscription.Name) ($($AzAPICallConfiguration['checkContext'].Subscription.Id))" + Logging -preventWriteOutput $true -logMessage " Stay with current Az context: Tenant:'$($AzAPICallConfiguration['checkContext'].Tenant.Id)' Subscription:'$($AzAPICallConfiguration['checkContext'].Subscription.Name) ($($AzAPICallConfiguration['checkContext'].Subscription.Id))'" } } @@ -1979,10 +1982,15 @@ function initAzAPICall { else { Logging -preventWriteOutput $true -logMessage " Az context Tenant: '$($AzAPICallConfiguration['checkContext'].Tenant.Id)'" -logMessageForegroundColor 'Yellow' if ($SkipAzContextSubscriptionValidation -eq $false) { - Logging -preventWriteOutput $true -logMessage " Az context Subscription: $($AzAPICallConfiguration['checkContext'].Subscription.Name) [$($AzAPICallConfiguration['checkContext'].Subscription.Id)] (state: $($AzAPICallConfiguration['checkContext'].Subscription.State))" -logMessageForegroundColor 'Yellow' + Logging -preventWriteOutput $true -logMessage " Az context Subscription: '$($AzAPICallConfiguration['checkContext'].Subscription.Name) ($($AzAPICallConfiguration['checkContext'].Subscription.Id))' (state: $($AzAPICallConfiguration['checkContext'].Subscription.State))" -logMessageForegroundColor 'Yellow' } else { - Logging -preventWriteOutput $true -logMessage " Az context Subscription check skipped (`$SkipAzContextSubscriptionValidation==$($SkipAzContextSubscriptionValidation))" -logMessageForegroundColor 'Yellow' + if ($AzAPICallConfiguration['checkContext'].Subscription) { + Logging -preventWriteOutput $true -logMessage " Az context Subscription check skipped (`$SkipAzContextSubscriptionValidation==$($SkipAzContextSubscriptionValidation)); Subscription:'$($AzAPICallConfiguration['checkContext'].Subscription.Name) ($($AzAPICallConfiguration['checkContext'].Subscription.Id)); state: $($AzAPICallConfiguration['checkContext'].Subscription.State)'" -logMessageForegroundColor 'Yellow' + } + else { + Logging -preventWriteOutput $true -logMessage " Az context Subscription check skipped (`$SkipAzContextSubscriptionValidation==$($SkipAzContextSubscriptionValidation)) - no Subscription in context" -logMessageForegroundColor 'Yellow' + } } Logging -preventWriteOutput $true -logMessage ' Az context check succeeded' -logMessageForegroundColor 'Green' } @@ -2240,7 +2248,7 @@ function testSubscription { $AzAPICallConfiguration ) - $currentTask = "Check Subscription: '$SubscriptionId4Test'" + $currentTask = "Check Subscription: '$SubscriptionId4Test' (criteria: quotaId notLike 'AAD*'; state==enabled)" Logging -logMessage " $currentTask" $uri = "$(($AzAPICallConfiguration['azAPIEndpointUrls']).ARM)/subscriptions/$($SubscriptionId4Test)?api-version=2020-01-01" $method = 'GET' @@ -2253,13 +2261,13 @@ function testSubscription { if ($testSubscription.state -ne 'Enabled') { Logging -logMessage " SubscriptionId '$SubscriptionId4Test' state: '$($testSubscription.state)'" } - Logging -logMessage " Subscription check - SubscriptionId: '$SubscriptionId4Test' - please define another Subscription (Subscription criteria: quotaId notLike 'AAD*'; state = enabled)" + Logging -logMessage " Subscription check - SubscriptionId: '$SubscriptionId4Test' - please define another Subscription (Subscription criteria: quotaId notLike 'AAD*'; state==enabled)" Logging -logMessage " Use parameter: -SubscriptionId4AzContext (e.g. -SubscriptionId4AzContext '66f7c01a-ca6c-4ec2-a80b-34cc2dbda7d7')" Throw 'Error - check the last console output for details' } else { $AzApiCallConfiguration['htParameters'].subscriptionQuotaId = $testSubscription.subscriptionPolicies.quotaId - Logging -logMessage " Subscription check succeeded (quotaId: '$($testSubscription.subscriptionPolicies.quotaId)')" -logMessageForegroundColor 'Green' + Logging -logMessage " Subscription check succeeded - quotaId: '$($testSubscription.subscriptionPolicies.quotaId)'; state: $($testSubscription.state)" -logMessageForegroundColor 'Green' } } function testUserType { diff --git a/pwsh/module/dev/AzAPICall/AzAPICall.psd1 b/pwsh/module/dev/AzAPICall/AzAPICall.psd1 index 54e2061..50a1d3f 100644 --- a/pwsh/module/dev/AzAPICall/AzAPICall.psd1 +++ b/pwsh/module/dev/AzAPICall/AzAPICall.psd1 @@ -12,7 +12,7 @@ RootModule = 'AzAPICall.psm1' # Version number of this module. - ModuleVersion = '1.1.77' + ModuleVersion = '1.1.78' # Supported PSEditions # CompatiblePSEditions = @() diff --git a/pwsh/module/dev/AzAPICall/functions/getAzAPICallVersion.ps1 b/pwsh/module/dev/AzAPICall/functions/getAzAPICallVersion.ps1 index ca2bef2..b8296a3 100644 --- a/pwsh/module/dev/AzAPICall/functions/getAzAPICallVersion.ps1 +++ b/pwsh/module/dev/AzAPICall/functions/getAzAPICallVersion.ps1 @@ -1 +1 @@ -function getAzAPICallVersion { return '1.1.77' } +function getAzAPICallVersion { return '1.1.78' } diff --git a/pwsh/module/dev/AzAPICall/functions/initAzAPICall.ps1 b/pwsh/module/dev/AzAPICall/functions/initAzAPICall.ps1 index 931fec7..0c2631c 100644 --- a/pwsh/module/dev/AzAPICall/functions/initAzAPICall.ps1 +++ b/pwsh/module/dev/AzAPICall/functions/initAzAPICall.ps1 @@ -85,18 +85,19 @@ Logging -preventWriteOutput $true -logMessage " Az context AccountType: '$($AzAPICallConfiguration['checkContext'].Account.Type)'" -logMessageForegroundColor 'Yellow' $AzApiCallConfiguration['htParameters'].accountType = $($AzAPICallConfiguration['checkContext'].Account.Type) - <# - if ($SubscriptionId4AzContext -match ('^(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}){0,1}$') -and $SkipAzContextSubscriptionValidation -eq $true) { - Logging -preventWriteOutput $true -logMessage " Contradictory use of parameters: `$SubscriptionId4AzContext==$($SubscriptionId4AzContext) AND `$SkipAzContextSubscriptionValidation=='$($SkipAzContextSubscriptionValidation)'" -logMessageForegroundColor 'DarkRed' - Logging -preventWriteOutput $true -logMessage " Setting parameter `$SkipAzContextSubscriptionValidation to '`$false'" -logMessageForegroundColor 'DarkRed' - $SkipAzContextSubscriptionValidation = $false - Logging -preventWriteOutput $true -logMessage " Parameter `$SkipAzContextSubscriptionValidation=='$($SkipAzContextSubscriptionValidation)'" -logMessageForegroundColor 'DarkRed' + Logging -preventWriteOutput $true -logMessage " Az context related parameters: -SubscriptionId4AzContext=='$SubscriptionId4AzContext'; -TenantId4AzContext=='$TenantId4AzContext'; -SkipAzContextSubscriptionValidation=='$($SkipAzContextSubscriptionValidation)'" + + if ($SubscriptionId4AzContext -and $SubscriptionId4AzContext -notmatch ('^(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}){0,1}$') -and $SubscriptionId4AzContext -ne 'undefined') { + Logging -preventWriteOutput $true -logMessage " Parameter -SubscriptionId4AzContext '$SubscriptionId4AzContext' is invalid, bypass use of the parameter" -logMessageForegroundColor 'Darkred' + $SubscriptionId4AzContext = $null + } + if ($TenantId4AzContext -and $TenantId4AzContext -notmatch ('^(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}){0,1}$') -and $TenantId4AzContext -ne 'undefined') { + Logging -preventWriteOutput $true -logMessage " Parameter -TenantId4AzContext '$TenantId4AzContext' is invalid, proceed with current Tenant Id: '$($AzAPICallConfiguration['checkContext'].Tenant.Id)'" -logMessageForegroundColor 'Darkred' + $TenantId4AzContext = $null } - #> - Logging -preventWriteOutput $true -logMessage " Context related parameters: -SubscriptionId4AzContext=='$SubscriptionId4AzContext'; -TenantId4AzContext=='$TenantId4AzContext'; -SkipAzContextSubscriptionValidation=='$($SkipAzContextSubscriptionValidation)'" $newAzContextSet = $false - if ($SubscriptionId4AzContext -match ('^(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}){0,1}$')) { + if ($SubscriptionId4AzContext -and $SubscriptionId4AzContext -match ('^(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}){0,1}$')) { if ($AzAPICallConfiguration['checkContext'].Subscription.Id -ne $SubscriptionId4AzContext) { try { if ($TenantId4AzContext -and $TenantId4AzContext -match ('^(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}){0,1}$')) { @@ -115,6 +116,7 @@ $AzAPICallConfiguration['checkContext'] = Get-AzContext -ErrorAction Stop } else { + Logging -preventWriteOutput $true -logMessage " Az context is already set to TenantId: '$TenantId4AzContext'" if ($SkipAzContextSubscriptionValidation -eq $false) { testSubscription -SubscriptionId4Test $SubscriptionId4AzContext -AzAPICallConfiguration $AzAPICallConfiguration } @@ -146,6 +148,7 @@ } } else { + Logging -preventWriteOutput $true -logMessage " Az context is already set to SubscriptionId: '$SubscriptionId4AzContext'" if ($SkipAzContextSubscriptionValidation -eq $false) { testSubscription -SubscriptionId4Test $SubscriptionId4AzContext -AzAPICallConfiguration $AzAPICallConfiguration } @@ -165,10 +168,10 @@ } } else { + Logging -preventWriteOutput $true -logMessage " Az context is already set to TenantId: '$TenantId4AzContext'" if (-not [string]::IsNullOrWhiteSpace($AzAPICallConfiguration['checkContext'].Subscription.Id) -and $SkipAzContextSubscriptionValidation -eq $false) { testSubscription -SubscriptionId4Test $AzAPICallConfiguration['checkContext'].Subscription.Id -AzAPICallConfiguration $AzAPICallConfiguration } - Logging -preventWriteOutput $true -logMessage " Stay with current Az context: Tenant:'$($AzAPICallConfiguration['checkContext'].Tenant.Id)' Subscription:'$($AzAPICallConfiguration['checkContext'].Subscription.Name) ($($AzAPICallConfiguration['checkContext'].Subscription.Id))'" } } catch { @@ -179,14 +182,14 @@ Logging -preventWriteOutput $true -logMessage " New Az context: Tenant:'$($AzAPICallConfiguration['checkContext'].Tenant.Id)' Subscription:'$($AzAPICallConfiguration['checkContext'].Subscription.Name) ($($AzAPICallConfiguration['checkContext'].Subscription.Id))'" } else { - Logging -preventWriteOutput $true -logMessage " Stay with current Az context (`$SkipAzContextSubscriptionValidation==$SkipAzContextSubscriptionValidation): $($AzAPICallConfiguration['checkContext'].Subscription.Name) ($($AzAPICallConfiguration['checkContext'].Subscription.Id))" + Logging -preventWriteOutput $true -logMessage " Stay with current Az context: Tenant:'$($AzAPICallConfiguration['checkContext'].Tenant.Id)' Subscription:'$($AzAPICallConfiguration['checkContext'].Subscription.Name) ($($AzAPICallConfiguration['checkContext'].Subscription.Id))'" } } elseif (-not [string]::IsNullOrWhiteSpace($AzAPICallConfiguration['checkContext'].Subscription.Id) -and $SkipAzContextSubscriptionValidation -eq $false) { testSubscription -SubscriptionId4Test $AzAPICallConfiguration['checkContext'].Subscription.Id -AzAPICallConfiguration $AzAPICallConfiguration } else { - Logging -preventWriteOutput $true -logMessage " Stay with current Az context (`$SkipAzContextSubscriptionValidation==$SkipAzContextSubscriptionValidation): $($AzAPICallConfiguration['checkContext'].Subscription.Name) ($($AzAPICallConfiguration['checkContext'].Subscription.Id))" + Logging -preventWriteOutput $true -logMessage " Stay with current Az context: Tenant:'$($AzAPICallConfiguration['checkContext'].Tenant.Id)' Subscription:'$($AzAPICallConfiguration['checkContext'].Subscription.Name) ($($AzAPICallConfiguration['checkContext'].Subscription.Id))'" } } @@ -201,10 +204,15 @@ else { Logging -preventWriteOutput $true -logMessage " Az context Tenant: '$($AzAPICallConfiguration['checkContext'].Tenant.Id)'" -logMessageForegroundColor 'Yellow' if ($SkipAzContextSubscriptionValidation -eq $false) { - Logging -preventWriteOutput $true -logMessage " Az context Subscription: $($AzAPICallConfiguration['checkContext'].Subscription.Name) [$($AzAPICallConfiguration['checkContext'].Subscription.Id)] (state: $($AzAPICallConfiguration['checkContext'].Subscription.State))" -logMessageForegroundColor 'Yellow' + Logging -preventWriteOutput $true -logMessage " Az context Subscription: '$($AzAPICallConfiguration['checkContext'].Subscription.Name) ($($AzAPICallConfiguration['checkContext'].Subscription.Id))' (state: $($AzAPICallConfiguration['checkContext'].Subscription.State))" -logMessageForegroundColor 'Yellow' } else { - Logging -preventWriteOutput $true -logMessage " Az context Subscription check skipped (`$SkipAzContextSubscriptionValidation==$($SkipAzContextSubscriptionValidation))" -logMessageForegroundColor 'Yellow' + if ($AzAPICallConfiguration['checkContext'].Subscription) { + Logging -preventWriteOutput $true -logMessage " Az context Subscription check skipped (`$SkipAzContextSubscriptionValidation==$($SkipAzContextSubscriptionValidation)); Subscription:'$($AzAPICallConfiguration['checkContext'].Subscription.Name) ($($AzAPICallConfiguration['checkContext'].Subscription.Id)); state: $($AzAPICallConfiguration['checkContext'].Subscription.State)'" -logMessageForegroundColor 'Yellow' + } + else { + Logging -preventWriteOutput $true -logMessage " Az context Subscription check skipped (`$SkipAzContextSubscriptionValidation==$($SkipAzContextSubscriptionValidation)) - no Subscription in context" -logMessageForegroundColor 'Yellow' + } } Logging -preventWriteOutput $true -logMessage ' Az context check succeeded' -logMessageForegroundColor 'Green' } diff --git a/pwsh/module/dev/AzAPICall/functions/testSubscription.ps1 b/pwsh/module/dev/AzAPICall/functions/testSubscription.ps1 index e6d249f..961cd5f 100644 --- a/pwsh/module/dev/AzAPICall/functions/testSubscription.ps1 +++ b/pwsh/module/dev/AzAPICall/functions/testSubscription.ps1 @@ -9,7 +9,7 @@ function testSubscription { $AzAPICallConfiguration ) - $currentTask = "Check Subscription: '$SubscriptionId4Test'" + $currentTask = "Check Subscription: '$SubscriptionId4Test' (criteria: quotaId notLike 'AAD*'; state==enabled)" Logging -logMessage " $currentTask" $uri = "$(($AzAPICallConfiguration['azAPIEndpointUrls']).ARM)/subscriptions/$($SubscriptionId4Test)?api-version=2020-01-01" $method = 'GET' @@ -22,12 +22,12 @@ function testSubscription { if ($testSubscription.state -ne 'Enabled') { Logging -logMessage " SubscriptionId '$SubscriptionId4Test' state: '$($testSubscription.state)'" } - Logging -logMessage " Subscription check - SubscriptionId: '$SubscriptionId4Test' - please define another Subscription (Subscription criteria: quotaId notLike 'AAD*'; state = enabled)" + Logging -logMessage " Subscription check - SubscriptionId: '$SubscriptionId4Test' - please define another Subscription (Subscription criteria: quotaId notLike 'AAD*'; state==enabled)" Logging -logMessage " Use parameter: -SubscriptionId4AzContext (e.g. -SubscriptionId4AzContext '66f7c01a-ca6c-4ec2-a80b-34cc2dbda7d7')" Throw 'Error - check the last console output for details' } else { $AzApiCallConfiguration['htParameters'].subscriptionQuotaId = $testSubscription.subscriptionPolicies.quotaId - Logging -logMessage " Subscription check succeeded (quotaId: '$($testSubscription.subscriptionPolicies.quotaId)')" -logMessageForegroundColor 'Green' + Logging -logMessage " Subscription check succeeded - quotaId: '$($testSubscription.subscriptionPolicies.quotaId)'; state: $($testSubscription.state)" -logMessageForegroundColor 'Green' } } \ No newline at end of file