2014-12-03 93 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