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.