Obtener IP externa a través de PowerShell


2

Solo me gustaría obtener IP externa a través de Powershell Solo dirección IP sin encabezado ni nada.

Intento muchas cosas como

(Invoke-WebRequest ifconfig.me/ip).Content

pero tiene esta segunda línea extra que no me hace bien.

Yo también lo intenté.

(Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE) | %{$_.ipaddress[0]}

Pero no me funciona porque estoy detrás del enrutador.

Gracias.

Function IPV()
{
$IPCHK = ((Invoke-WebRequest ifconfig.me/ip).Content.Trim())
$IPCHK | Out-FIle 'CHKIP.txt'
}
$CurrentIP = ((Invoke-WebRequest ifconfig.me/ip).Content.Trim())
$PreviousIP = Get-Content 'CHKIP.txt'

IF($PreviousIP -eq ((Invoke-WebRequest ifconfig.me/ip).Content.Trim()))
    {
        $PreviousIP
        }
ELSE {
       ##SEND EMAIL SCRIPT
        IPV #RUN CHECK IP COMMAND AGAIN.
}

¿Puedes explicar por qué necesitas esta información? Intentar encontrar la dirección IP externa de un servidor es realmente complicado.
— bits salpicados

2
Quiero ejecutar este script que verificará si mi IP externa cambió. si es así, me enviará una notificación en mi iPhone.
— user206168

Respuestas:


4

Ya tienes tu respuesta. Solo desea deshacerse de la línea adicional, nada lo obliga a usar

(Invoke-WebRequest ifconfig.me/ip).Content

como es. En cambio, podría usar esto:

(Invoke-WebRequest ifconfig.me/ip).Content.Trim()

El método String.Trim "elimina todos los caracteres de espacio en blanco iniciales y finales del objeto String actual".


Todavía no lo compara correctamente. Por favor revise mi script publicado, si ejecuto este script todavía tiene una línea adicional. gracias
— user206168

Trim()la salida de Get-Content, solo para estar seguro. Además, usa tu $CurrentIPvariable. ;)
— Daniel B

entonces seria Get-Content.Trim()?
— user206168

1
No, funciona como Invoke-WebRequest. Pones paréntesis alrededor y .Trim()después de eso. Pero recomiendo publicar una nueva pregunta, porque todo esto se desvía demasiado del enfoque original de esta pregunta.
— Daniel B

Por favor, vea mi solución.
— user206168

2

Un método usando OpenDNS.

$(Resolve-DnsName -Name myip.opendns.com -Server 208.67.222.220).IPAddress

¿Lo siento? ¿Por qué agregaste un comentario solo con el comando que sugerí?
— Zoredache

Lo siento, pegado malResolve-DnsName : The term 'Resolve-DnsName' is not recognized as the name of a cmdlet, function,
— user206168

Ah, creo que es uno de los Commandlets Win 8+. Supongo que estás en Windows 7?
— Zoredache

No, estoy usando Windows 8.
— user206168

0

Pude solucionar mi problema seleccionando solo la primera línea del archivo de texto. No pude usar TRIM y eliminar la línea vacía.

Usando este enlace hice lo siguiente.

Function IPV()
{
$IPCHK = ((Invoke-WebRequest ifconfig.me/ip).Content)
$IPCHK.TRIM() # Just Like tht.
$IPCHK > 'CHKIP.txt'
}
$CurrentIP = ((Invoke-WebRequest ifconfig.me/ip).Content.Trim())
$PreviousIP = Get-Content 'CHKIP.txt' | SELECT -First 1   #ONLY Selects First Line.

IF($PreviousIP -eq ((Invoke-WebRequest ifconfig.me/ip).Content.Trim()))
    {
        $PreviousIP
        }
ELSE {
        #DO YOUR STUFF :))
        IPV #RUN CHECK IP COMMAND AGAIN.
}

Espero eso ayude.


Aún no estás usando tu $CurrentIPvariable. : P
— Daniel B

-1

los datos anteriores ya no funcionan. Así que personalmente he hecho una alternativa al script anterior.

Puede escribir esto en cmd / powershell cada vez que desee tomar su ip externa.

(Invoke-WebRequest https://lab.blackvikingpro.com/dev/ip.php).Content

Si esta página o secuencia de comandos le da algún error, dígame. ¡Gracias!


No hay forma de que ejecute un script desconocido. Debe incluir todo el código aquí o código abierto en Github o Bitbucket
— Burgi
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.