domenica 20 marzo 2022

PowerShell: Verificare il formato di un URL

In PowerShell non è necessario ricorrere alle regular expression per verificare il formato di una stringa. PowerShell, infatti, consente l'utilizzo di API e per questo tipo di operazioni è possibile utilizzare uno dei tanti metodi specializzati presenti in .NET Framework.

In quest'articolo verrà mostrato come verificare il formato di un URL. Prima però, bisogna fare un po' di chiarezza sui termini URI, URL e URN.

Un URI (Uniform Resource Identifier) è una sequenza di caratteri che identifica universalmente ed univocamente una risorsa come ad esempio un indirizzo web, un documento o il codice ISBN di un libro. Un URI può essere classificato come qualcosa che definisce posizioni (URL), nomi (URN) o entrambi:
  • URL (Uniform Resource Locator) serve per identificare univocamente la locazione di una determinata risorsa ovvero il suo indirizzo. L'URL viene prevalentemente utilizzato per indicare risorse web (HTTP o HTTPS), risorse accessibili tramite protocolli di trasferimento file (FTP), condivisione remote (SMB) e accessi a sistemi esterni (SSH). La sua semantica è data da 
    protocollo://[username:password@]host[:porta]</percorso>[?querystring][#fragment]
  • URN (Uniform Resource Name) è un URI che identifica una risorsa mediante un nome in un particolare dominio di nomi detto "Namespace". Un URN può essere utilizzato per descrivere una risorsa senza lasciare intendere la sua ubicazione o su come ottenerne una rappresentazione. Tale URN deve restare unico e persistente anche qualora la risorsa smetta di esistere o non sia più disponibile. Per esempio l'URN urn:isbn:978-0-470-53286-7 è un URI che mappa universalmente e univocamente un libro mediante il suo identificativo, o nome, (978-0-470-53286-7) nel namespace dei codici ISBN, ma non suggerisce dove e come ottenere una copia di tale libro e il nome resterà valido (non verrà assegnato ad altri libri) anche quando la risorsa non sarà più disponibile.

Per verificare se il formato di un URL è corretto utilizzando Powershell, è possibile utilizzare il metodo IsWellFormedUriString della classe URI. Il comando sarà del tipo
[Uri]::IsWellFormedUriString(uriString, uriKind)
dove uriString rappresenta la stringa dell'URL da verificare e uriKind ne specifica il tipo (assoluto o relativo). Gli URI assoluti sono caratterizzati da un riferimento completo alla risorsa (ad esempio https://www.contoso.com/index.html), mentre un URI relativo è la forma abbreviata che si limita a indicare solo la deviazione dall'URI di base (ad esempio nell'URI base https://www.contoso.com l'URI relativo è index.html). 
Il metodo restituirà True se la stringa è ben formata e False in caso contrario.

Esempio
[Uri]::IsWellFormedUriString("https://giovannilubrano.blogspot.com", [UriKind]::Absolute)
In questo esempio viene testato l'URL https://giovannilubrano.blogspot.com. Come visibile in figura, il formato dell'URL risulta corretto.
Metodo IsWellFormedUriString
FIG 1 - Metodo IsWellFormedUriString







Nessun commento:

Posta un commento

I messaggi sono soggetti a moderazione da parte dell'amministratore prima della loro pubblicazione.