2014-12-03 158 views

回答

8

如果我使用这个机器名称,它的工作原理。但就是有点像一个黑客(因为我刚刚好转,我得到的IPv4地址的第一个值。)

$ipaddress=([System.Net.DNS]::GetHostAddresses('PasteMachineNameHere')|Where-Object {$_.AddressFamily -eq "InterNetwork"} | select-object IPAddressToString)[0].IPAddressToString 

注意,您必须在上面的表达式替换值PasteMachineNameHere

此作品太

​​
15

这个怎么样? (不是我的真实IP地址!)

PS C:\> $ipV4 = Test-Connection -ComputerName (hostname) -Count 1 | Select IPV4Address 

PS C:\> $ipV4 

IPV4Address             
----------- 
192.0.2.0 

注意,使用本地主机只会127.0.0.1的返回和IP

PS C:\> $ipV4 = Test-Connection -ComputerName localhost -Count 1 | Select IPV4Address 

PS C:\> $ipV4 

IPV4Address                
-----------             
127.0.0.1 

IP地址对象将扩大出去找地址字符串

PS C:\> $ipV4 = Test-Connection -ComputerName (hostname) -Count 1 | Select -ExpandProperty IPV4Address 

PS C:\> $ipV4 

Address   : 556228818 
AddressFamily  : InterNetwork 
ScopeId   : 
IsIPv6Multicast : False 
IsIPv6LinkLocal : False 
IsIPv6SiteLocal : False 
IsIPv6Teredo  : False 
IsIPv4MappedToIPv6 : False 
IPAddressToString : 192.0.2.0 


PS C:\> $ipV4.IPAddressToString 
192.0.2.0 
+1

有专门的IP地址r (192.0.2.0/24,198.51.100.0/24,203.0.113.0/24)https://tools.ietf.org/html/rfc5737 – spuder 2016-02-12 16:41:38

+2

'$ ip =(Test-Connection -ComputerName(hostname) - 计数1).IPV4Address.IPAddressToString' – gvee 2016-02-17 11:32:09

+1

通过使用'$ env:COMPUTERNAME'环境变量,即'Test-Connection $ env:COMPUTERNAME -Count 1 |',可以避免使用'(主机名)'调用外部工具。选择IPV4Address'。 – Livven 2017-11-27 15:30:51

5

这里是我最终使用

$ipaddress = $(ipconfig | where {$_ -match 'IPv4.+\s(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})' } | out-null; $Matches[1]) 

其分解为

  • 中执行ipconfig命令 - 让所有的网络接口信息
  • 使用PowerShell的其中一个正则表达式过滤
  • 正则表达式找到符合的“IPv4”和一组4每个块用1-3个数字分隔一段时间,即v4 IP地址
  • 忽略通过将其输出为空的输出
  • 最终获得正则表达式中括号定义的第一个匹配组。
  • 捕获$ ipaddress中的输出供以后使用。
3

这里是另一种解决方案:

$env:HostIP = (` 
    Get-NetIPConfiguration | ` 
    Where-Object { ` 
     $_.IPv4DefaultGateway -ne $null ` 
     -and ` 
     $_.NetAdapter.Status -ne "Disconnected" ` 
    } ` 
).IPv4Address.IPAddress 
3

使用$env环境变量抢主机的另一个变种:

Test-Connection -ComputerName $env:computername -count 1 | Select-Object IPV4Address 

,或者如果你只是想在IP地址没有财产头返回

(Test-Connection -ComputerName $env:computername -count 1).IPV4Address.ipaddressTOstring