Site icon Gioxx.org

PowerShell: Accesso condizionale (Azure AD), lista paesi permessi

PowerShell: usare Try/Catch per un output pulito in caso di errore

Per la precisione si tratta più di “data la lista di sigle fornite da Microsoft, io te le traduco in maniera più leggibile“. È lo scopo del codice PowerShell di cui ti voglio parlare oggi, mi è servito per risparmiare tempo rispetto all’uso dell’interfaccia grafica che non permette facilmente di filtrare in un solo colpo i paesi dai quali vuoi permettere l’accesso condizionale alle risorse del tenant Microsoft 365.

Partendo dal presupposto che ho dovuto specificare un gruppo di località nel mio caso battezzato “Località conosciute” all’interno delle Named Locations (Località denominate nella console Azure localizzata in italiano) della console Azure AD, lo script non fa altro che richiamare quel gruppo e comparare le sigle che fanno parte dell’array CountriesAndRegions con un file CSV che contiene una mappatura tra sigla e nome esteso della località, file che ho reperito facilmente in rete (qui ne trovi uno molto completo su GitHub, io ne utilizzo uno decisamente più semplice ospitato da Datahub).

Lo script è stato pubblicato nel mio spazio Gist e non fa altro che collegarsi ad Azure AD (verificherà lui la presenza del modulo per PowerShell integrata – non 7 – a bordo del sistema e ti chiederà di provvedere all’installazione in caso di necessità), quindi scaricare il file CSV da Datahub se non già presente nella directory dello script PS1 e confrontare le sigle fornite da Microsoft con il file CSV, rispondendo a video con i nomi estesi dei paesi permessi (che – come già scritto – si trovano in un gruppo nominato “Località conosciute“, che dovrai modificare all’interno dello script se ne usi uno differente sul tuo tenant Microsoft 365):

<#
OFFICE 365: Expand Countries from Location Policies on Azure AD (Get-AzureADMSNamedLocationPolicy) for PowerShell 7
---------------------------------------------------------------------------------------------------
Autore: GSolone
Versione: 0.1
Utilizzo: .\AzureADMSNamedLocationPolicy-CountriesTranslate.ps1
Info: https://gioxx.org/tag/o365-powershell
Fonti utilizzate: https://learn.microsoft.com/en-us/powershell/module/azuread/get-azureadmsnamedlocationpolicy?view=azureadps-2.0
https://datahub.io/core/country-list
https://stackoverflow.com/a/5466355/2220346
https://community.spiceworks.com/topic/1996389-extract-values-from-csv
https://kbase.io/check-if-azuread-connection-has-been-established-in-powershell/
Ultima modifica: 04-01-2023
Modifiche:
0.1- prima versione.
#>
Function LoadData($filename) {
try {
$data = Import-Csv $filename -Delimiter ","
} catch {
throw $_.Exception.Message
}
return $data
}
$AzureAdModule = Get-Module -Name AzureAd -ListAvailable
if ($AzureAdModule.count -eq 0) {
Write-Host "You must install AzureAd module to use this script. Copy and paste this command (then launch again this script): `nInstall-Module AzureAd" -f "Yellow"
Exit
}
else {
try {
$var = Get-AzureADTenantDetail
}
catch [Microsoft.Open.Azure.AD.CommonLibrary.AadNeedAuthenticationException] {
Write-Host "You're not connected to AzureAD"
Import-Module AzureAd -UseWindowsPowershell
Connect-AzureAd | Out-Null
}
}
if (Get-Item -Path "$PSScriptRoot\countries.csv" -ErrorAction Ignore) {
$data = LoadData("$PSScriptRoot\countries.csv")
} else {
Invoke-WebRequest "https://datahub.io/core/country-list/r/data.csv" -OutFile "$PSScriptRoot\countries.csv"
$data = LoadData("$PSScriptRoot\countries.csv")
}
$countries = Get-AzureADMSNamedLocationPolicy | Where { $_.DisplayName -like "Località conosciute"} | Select-Object -ExpandProperty CountriesAndRegions | Sort
$countries | Foreach-Object {
Foreach ($country in $data) {
if ($country.Code -eq $_) { Write-Host $country.Name }
}
}
Remove-Item "$PSScriptRoot\countries.csv"

In caso di dubbi sai già cosa fare, l’area commenti è a tua totale disposizione :-)

#StaySafe


Credits:
learn.microsoft.com/en-us/powershell/module/azuread/get-azureadmsnamedlocationpolicy

Correzioni, suggerimenti? Lascia un commento nell'apposita area qui di seguito o contattami privatamente.
Ti è piaciuto l'articolo? Offrimi un caffè! ☕ :-)

L'articolo potrebbe non essere aggiornato

Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)

Condividi l'articolo con i tuoi contatti:
Exit mobile version