web-dev-qa-db-ja.com

Powershellはipv4アドレスを変数に取得します

Powershell 3.0 Windows 7でローカルコンピューターのipv4アドレスを変数に取得する簡単な方法はありますか?

27
developer747

別のソリューションを次に示します。

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

これはどう? (実際のIPアドレスではありません!)

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

PS C:\> $ipV4

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

Localhostを使用すると、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
26

マシン名を使用すると、これは機能します。しかし、ハックのようなものです(私が取得したipv4アドレスの最初の値を選択しているためです)。

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

上記の式の値PasteMachineNameHereを置き換える必要があることに注意してください

これも機能します

$localIpAddress=((ipconfig | findstr [0-9].\.)[0]).Split()[-1]
10
developer747
(Get-WmiObject -Class Win32_NetworkAdapterConfiguration | where {$_.DefaultIPGateway -ne $null}).IPAddress | select-object -first 1
8
Nick Ali

ここに私が使ったものがあります

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

として分解する

  • ipconfigコマンドを実行-すべてのネットワークインターフェイス情報を取得
  • powershellのwhereフィルターを正規表現で使用する
  • 正規表現は、「IPv4」の行と、ピリオドで区切られた1〜3桁の4つのブロックのセット、つまりv4 IPアドレスを検索します。
  • nullにパイプすることで出力を無視します
  • 最後に、正規表現の括弧で定義された最初に一致したグループを取得します。
  • 後で使用するために、その出力を$ ipaddressでキャッチします。
6
rob

$env環境変数を使用してホスト名を取得する別のバリ​​アント:

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

または、プロパティヘッダーなしでIPアドレスを返すだけの場合

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

この1つのライナーは、IPアドレスを提供します。

(Test-Connection -ComputerName $env:computername -count 1).ipv4address.IPAddressToString

変数に含めますか?

$IPV4=(Test-Connection -ComputerName $env:computername -count 1).ipv4address.IPAddressToString
2
icey