通过 PowerShell 获取外部 IP

use*_*168 5 networking powershell ip-address

我只想通过 Powershell 获取外部 IP 只是 IP 地址,没有标头或任何东西。

我尝试了很多事情,例如

(Invoke-WebRequest ifconfig.me/ip).Content
Run Code Online (Sandbox Code Playgroud)

但它有这个额外的第二行,这对我没有好处。

我也试过了。

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

但这对我不起作用,因为我在路由器后面。

谢谢。

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.
}
Run Code Online (Sandbox Code Playgroud)

Dan*_*l B 12

你已经有了答案。你只是想摆脱额外的行——没有什么强迫你使用

(Invoke-WebRequest ifconfig.me/ip).Content
Run Code Online (Sandbox Code Playgroud)

照原样。相反,你可以使用这个:

(Invoke-WebRequest ifconfig.me/ip).Content.Trim()
Run Code Online (Sandbox Code Playgroud)

String.Trim方法“中删除从当前字符串对象中的所有前导和尾随空白字符”。


Zor*_*che 6

一种方法是使用 OpenDNS。

Resolve-DnsName在 Windows 8.1/Server 2012 或更高版本的 Powershell 4 中使用CmdLet

$(Resolve-DnsName -Name myip.opendns.com -Server 208.67.222.220).IPAddress
Run Code Online (Sandbox Code Playgroud)

或者在早期的 Windows 版本中仅使用简单的 nslookup

$my_ip = ((& "nslookup" "myip.opendns.com" "208.67.222.220") |select -last 2)[0].Trim("Address:").Trim()
Run Code Online (Sandbox Code Playgroud)