Come ottenere l’indirizzo IP in PowerShell (privato e pubblico)

Ogni volta che il tuo computer è connesso a una rete o a Internet, il tuo dispositivo avrà due indirizzi IP: l’indirizzo IP pubblico e l’indirizzo IP privato.

Tutti i dispositivi su Internet utilizzano il tuo IP pubblico per la comunicazione, mentre l’IP privato è solo per la tua rete locale. Infatti, quando la maggior parte usa il termine “indirizzo IP”, in realtà si riferisce a un indirizzo IP privato.

Puoi scoprire l’IP privato e pubblico del tuo computer tramite PowerShell in diversi modi. Mostrerò anche come assegnare l’indirizzo IP a una variabile, utile se stai scrivendo uno script PowerShell.

Se volete continuare a leggere questo post su "[page_title]" cliccate sul pulsante "Mostra tutti" e potrete leggere il resto del contenuto gratuitamente. ebstomasborba.pt è un sito specializzato in Tecnologia, Notizie, Giochi e molti altri argomenti che potrebbero interessarvi. Se desiderate leggere altre informazioni simili a [page_title], continuate a navigare sul web e iscrivetevi alle notifiche del blog per non perdere le ultime novità.

Seguir leyendo


Sommario

Come ottenere un indirizzo IP privato in PowerShell?

È possibile utilizzare vari cmdlet specifici di Net TCP/IP e relativi alla gestione dei dispositivi in ​​PowerShell per ottenere l’indirizzo IP privato. Questi cmdlet controllano le configurazioni della rete e della scheda di rete, inclusi questi dati.

Inoltre, sebbene tutti questi cmdlet ti consentano di ottenere l’indirizzo IP , mostrano anche altri parametri. Poiché il tipo di parametri differisce tra i cmdlet, è possibile preferirne uno rispetto all’altro a seconda della situazione.

Utilizzo di Get-NetIPAddress

Il modo standard per visualizzare l’indirizzo IP in PowerShell consiste nell’usare il cmdlet Get-NetIPAddress , che mostra la configurazione dell’indirizzo IP.

Questo cmdlet elenca la configurazione IP di tutte le reti fisiche e virtuali nel sistema. Pertanto, è necessario combinarlo con un cmdlet aggiuntivo per restringere il risultato alla rete corrente.

  • Qui è possibile utilizzare il cmdlet Where-Object per elencare solo i dettagli dell’indirizzo IP di rete con lo stato dell’indirizzo “Preferred” e la durata valida che non supera le 24 ore. Il cmdlet combinato è:
    Get-NetIPAddress | Where-Object {$_.AddressState -eq "Preferred" -and $_.ValidLifetime -lt "24:00:00"}
  • È inoltre possibile utilizzare l’operatore periodo (.) per ottenere una sola proprietà (in questo caso, IPAddress) da questi dati.
    (Get-NetIPAddress | Where-Object {$_.AddressState -eq "Preferred" -and $_.ValidLifetime -lt "24:00:00"}).IPAddress
  • Inoltre, puoi utilizzare l’ultimo comando per memorizzare l’indirizzo IP in una variabile. Devi inserire il cmdlet:
    $MyIP=(Get-NetIPAddress | Where-Object {$_.AddressState -eq "Preferred" -and $_.ValidLifetime -lt "24:00:00"}).IPAddress $MyIP con la tua variabile.

Utilizzo di Get-NetIPConfiguration

Un altro modo per determinare l’indirizzo IP corrente consiste nel controllare la configurazione di rete corrente tramite Get-NetIPConfiguration .

Come nel caso precedente, Get-NetIPConfiguration elenca anche tutte le configurazioni di rete. Pertanto, è preferibile utilizzare il cmdlet Where-Object per elencare solo i dettagli della rete corrente.

  • È necessario selezionare la rete a cui è assegnato un gateway predefinito IPv4 (il valore non deve essere vuoto) e il cui adattatore non è attualmente disconnesso. Il cmdlet è:
    Get-NetIPConfiguration | Where-Object {$_.IPv4DefaultGateway -ne $null -and $_.NetAdapter.status -ne "Disconnected"}
  • Per ottenere solo l’indirizzo IP, puoi utilizzare il cmdlet di seguito
    (Get-NetIPConfiguration | Where-Object {$_.IPv4DefaultGateway -ne $null -and $_.NetAdapter.status -ne "Disconnected"}).IPv4Address.IPAddress
  • Allo stesso modo è possibile assegnarlo a un valore. Ad esempio,
    $MyIP=(Get-NetIPConfiguration | Where-Object {$_.IPv4DefaultGateway -ne $null -and $_.NetAdapter.status -ne "Disconnected"}).IPv4Address.IPAddress

Utilizzando IPConfig

IPConfig è l’equivalente del prompt dei comandi di Get-NetIPConfiguration . Poiché PowerShell consente anche di utilizzare i comandi del prompt dei comandi, è possibile utilizzare anche IPConfig .

  • Qui puoi digitare ipconfig e premere Invio, quindi cercare l’indirizzo IPv4 sulla tua rete (il cui gateway predefinito non è vuoto).
  • Oppure puoi inserire ((ipconfig | findstr [0-9]..)[0]).Split()[-1] per visualizzare solo l’indirizzo IP. Puoi anche assegnarlo direttamente a una variabile, ad esempio $MyIP=((ipconfig | findstr [0-9]..)[0]).Split()[-1]

Utilizzo di Test-NetConnection

Test-NetConnection è l’ultimo sostituto delle funzioni ping e traceroute in PowerShell. Questo cmdlet visualizza anche l’indirizzo IP del computer durante l’esecuzione di un test ping.

  • Puoi semplicemente inserire Test-NetConnection o Test-NetConnection con qualsiasi server come Test-NetConnection google.com o Test-NetConnection 8.8.8.8 . Vedrai l’indirizzo IPv4 sotto SourceAddress .
  • Se vuoi ottenere solo l’indirizzo IP, puoi inserire (Test-NetConnection).SourceAddress.IPAddress . E allo stesso modo puoi assegnarlo a un valore. Ad esempio, $MyIP=(Test-NetConnection).SourceAddress.IPAddress

Utilizzo di Get-WmiObject

Le configurazioni della scheda di rete del tuo computer rientrano nelle classi Strumentazione gestione Windows (WMI). È quindi possibile ottenere direttamente tali informazioni utilizzando il cmdlet Get-WmiObject. Infatti, Get-NetIPAddress e Get-NetIPConfig usano le informazioni nella classe WMI anche per visualizzare i risultati.

La classe WMI di cui hai bisogno è Win32_NetworkAdapterConfiduration . E poiché il cmdlet Get-WmiObject visualizzerà tutte le configurazioni dell’adattatore, sarà necessario il cmdlet Where-Object per visualizzare solo i dettagli della rete corrente.

  • È possibile elencare la configurazione della scheda di rete in cui il DHCP è abilitato e il gateway predefinito non è vuoto utilizzando il cmdlet seguente:
    (Get-WmiObject -Class Win32_NetworkAdapterConfiguration | Where-Object {$_.DHCPEnabled -ne $null -and $_.DefaultIPGateway -ne $null})
  • Ora puoi utilizzare l’operatore period per visualizzare solo la proprietà IPAddress.
    (Get-WmiObject -Class Win32_NetworkAdapterConfiguration | Where-Object {$_.DHCPEnabled -ne $null -and $_.DefaultIPGateway -ne $null}).IPAddress
  • La proprietà IPAddress mostra sia l’indirizzo IPv4 che l’indirizzo IPv6 Link-Local. Se è necessario ottenere solo l’indirizzo IPv4, è possibile aggiungere il cmdlet Select-Object -First 1 per ottenere solo il primo valore, ad esempio l’indirizzo IPv4.
    (Get-WmiObject -Class Win32_NetworkAdapterConfiguration | Where-Object {$_.DHCPEnabled -ne $null -and $_.DefaultIPGateway -ne $null}).IPAddress | Select-Object -First 1
  • E simile agli altri metodi, puoi assegnarlo direttamente a una variabile. Ad esempio,
    $MyIP = (Get-WmiObject -Class Win32_NetworkAdapterConfiguration | where {$_.DHCPEnabled -ne $null -and $_.DefaultIPGateway -ne $null}).IPAddress | Select-Object -First 1

Utilizzo di Get-CimInstance

Get-CimInstance è la versione migliorata di Get-WMIObject , quindi è preferibile usare questo cmdlet per la maggior parte dei casi. Tuttavia, poiché il risultato di entrambi i cmdlet a questo proposito è simile, è possibile scegliere uno dei due.

Tuttavia, Get-CimInstance Visualizza i dati in un formato tabulare per impostazione predefinita, quindi potrebbe essere necessario aggiungere ulteriori cmdlet per ottenere l’indirizzo IP.

  • È possibile utilizzare il cmdlet Format-List per modificare la formattazione in un modulo elenco simile a Get-WMIObject .
    Ad esempio, (Get-CimInstance -Class Win32_NetworkAdapterConfiguration | Where-Object {$_.DHCPEnabled -ne $null -and $_.DefaultIPGateway -ne $null}) | Format-List
  • Se vuoi ottenere solo l’indirizzo IPv4 o assegnarlo a una variabile, non è necessario utilizzare Format-List.
    (Get-CimInstance -Class Win32_NetworkAdapterConfiguration | Where-Object {$_.DHCPEnabled -ne $null -and $_.DefaultIPGateway -ne $null}).IPAddress | Select-Object -First 1

Come ottenere un indirizzo IP pubblico in PowerShell?

Se vuoi conoscere il tuo indirizzo IP pubblico tramite PowerShell, devi utilizzare i cmdlet che inviano dati HTTP o HTTPS ad alcuni specifici server di terze parti.

Il modo più semplice per farlo consiste nell’usare i cmdlet Invoke-WebRequest o Invoke-RestMethod. E puoi usare i server come https://api.ipify.org/, https://ident.me, https://ifconfig.me/ip, https://ipinfo.io/ip e così via.

Utilizzo di Invoke-WebRequest

  • Immettere il cmdlet, Invoke-WebRequest -uri “https://api.ipify.org/” e controllare il valore di Content per ottenere l’IP pubblico.
  • Puoi utilizzare qualsiasi altro server come menzionato prima al posto di https://api.ipify.org/ allo stesso modo.
  • Se desideri solo l’indirizzo IP pubblico, puoi utilizzare l’operatore punto (.).
    (Invoke-WebRequest -uri “https://api.ipify.org/”).Content
    e puoi assegnarlo a qualsiasi variabile tu voglia.

Utilizzo di Invoke-RestMethod

  • Immettere il cmdlet, Invoke-RestMethod -uri (“https://api.ipify.org/”) per ottenere l’IP pubblico.
  • Allo stesso modo è possibile sostituire l’identificatore di risorsa uniforme (URI) con qualsiasi altro server menzionato in precedenza e assegnarlo direttamente a una variabile.