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.
}
usuario206168
fuente
¿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".

Daniel B
fuente
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
Zoredache
fuente
¿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.

usuario206168
fuente
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!

BlackVikingPro
fuente
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