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à.
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 comeTest-NetConnection google.com
oTest-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 aGet-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.