ネットワーク タスクの実行
このサンプルは、Windows プラットフォームにのみ適用されます。
TCP/IP は最も一般的に使用されるネットワーク プロトコルであるため、ほとんどの低レベルのネットワーク プロトコル管理タスクには TCP/IP が含まれます。 このセクションでは、PowerShell と WMI を使用してこれらのタスクを実行します。
コンピューターの IP アドレスの一覧表示
ローカル コンピューターで使用中のすべての IP アドレスを取得するには、次のコマンドを使用します。
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true |
Select-Object -ExpandProperty IPAddress
Win32_NetworkAdapterConfiguration オブジェクトの IPAddress プロパティは配列であるため、アドレスの一覧全体を表示するには、Select-Object
の ExpandProperty パラメーターを使用する必要があります。
10.0.0.1
fe80::60ea:29a7:a233:7cb7
2601:600:a27f:a470:f532:6451:5630:ec8b
2601:600:a27f:a470:e167:477d:6c5c:342d
2601:600:a27f:a470:b021:7f0d:eab9:6299
2601:600:a27f:a470:a40e:ebce:1a8c:a2f3
2601:600:a27f:a470:613c:12a2:e0e0:bd89
2601:600:a27f:a470:444f:17ec:b463:7edd
2601:600:a27f:a470:10fd:7063:28e9:c9f3
2601:600:a27f:a470:60ea:29a7:a233:7cb7
2601:600:a27f:a470::2ec1
Get-Member
コマンドレットを使用すると、IPAddress プロパティが配列であることがわかります。
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true |
Get-Member -Name IPAddress
TypeName: Microsoft.Management.Infrastructure.CimInstance#root/cimv2/Win32_NetworkAdapterConfiguration
Name MemberType Definition
---- ---------- ----------
IPAddress Property string[] IPAddress {get;}
各ネットワーク アダプターの IPAddress プロパティは、実際には配列です。 定義の中かっこは、IPAddress が System.String 値ではなく、System.String 値の配列であることを示します。
IP 構成データの一覧表示
各ネットワーク アダプターの詳細な IP 構成データを表示するには、次のコマンドを使用します。
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true
ネットワーク アダプター構成オブジェクトの既定の表示は、使用可能な情報の非常に小さいセットです。 詳細な検査とトラブルシューティングを行うには、Select-Object
または Format-List
などの書式設定コマンドレットを使用して、表示するプロパティを指定します。
最新の TCP/IP ネットワークでは、IPX または WINS プロパティに興味がない可能性があります。
Select-Object
の ExcludeProperty パラメーターを使用すると、名前が "WINS" または "IPX" で始まるプロパティを非表示にすることができます。
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true |
Select-Object -ExcludeProperty IPX*,WINS*
このコマンドは、DHCP、DNS、ルーティング、およびその他のマイナー IP 構成プロパティに関する詳細情報を返します。
コンピューターに ping を実行する
Win32_PingStatusを使用して、コンピューターに対して単純な ping を実行できます。 次のコマンドは ping を実行しますが、長い出力を返します。
Get-CimInstance -Class Win32_PingStatus -Filter "Address='127.0.0.1'"
Win32_PingStatus からの応答には、29 個のプロパティが含まれています。
Format-Table
を使用して、最も興味深いプロパティを選択できます。
Format-Table
の Autosize パラメーターは、PowerShell で適切に表示されるようにテーブル列のサイズを変更します。
Get-CimInstance -Class Win32_PingStatus -Filter "Address='127.0.0.1'" |
Format-Table -Property Address,ResponseTime,StatusCode -Autosize
Address ResponseTime StatusCode
------- ------------ ----------
127.0.0.1 0 0
StatusCode が 0 の場合は、ping が成功したことを示します。
配列を使用すると、1 つのコマンドで複数のコンピューターに ping を実行できます。 複数のアドレスがあるため、ForEach-Object
を使用して各アドレスに個別に ping を実行します。
'127.0.0.1','localhost','bing.com' |
ForEach-Object -Process {
Get-CimInstance -Class Win32_PingStatus -Filter ("Address='$_'") |
Select-Object -Property Address,ResponseTime,StatusCode
}
同じコマンド形式を使用して、ネットワーク番号 192.168.1.0 を使用するプライベート ネットワークや標準のクラス C サブネット マスク (255.255.255.0) など、サブネット上のすべてのアドレスに ping を実行できます。 192.168.1.1 から 192.168.1.254 までの範囲のアドレスのみが正当なローカル アドレスです (0 は常にネットワーク番号用に予約され、255 はサブネット ブロードキャスト アドレスです)。
PowerShell で 1 から 254 までの数値の配列を表すには、1..254
式を使用します。
完全なサブネット ping を実行するには、範囲内の各値を ping ステートメントの部分的なアドレスに追加します。
1..254| ForEach-Object -Process {
Get-CimInstance -Class Win32_PingStatus -Filter ("Address='192.168.1.$_'") } |
Select-Object -Property Address,ResponseTime,StatusCode
アドレスの範囲を生成するこの手法は、他の場所でも使用できることに注意してください。 次の方法でアドレスの完全なセットを生成できます。
$ips = 1..254 | ForEach-Object -Process {'192.168.1.' + $_}
ネットワーク アダプターのプロパティの取得
前に、Win32_NetworkAdapterConfiguration クラスを使用して一般的な構成プロパティを取得できることを説明しました。 厳密には TCP/IP 情報ではありませんが、MAC アドレスやアダプターの種類などのネットワーク アダプター情報は、コンピューターで何が起こっているかを理解するのに役立ちます。 この情報の概要を取得するには、次のコマンドを使用します。
Get-CimInstance -Class Win32_NetworkAdapter -ComputerName .
ネットワーク アダプターの DNS ドメインの割り当て
DNS ドメインを自動名前解決に割り当てるには、Win32_NetworkAdapterConfigurationの SetDNSDomain メソッドを使用します。
Invoke-CimMethod
の Query パラメーターは、WQL クエリ文字列を受け取ります。 このコマンドレットは、クエリによって返される各インスタンスで指定されたメソッドを呼び出します。
$wql = 'SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=True'
$args = @{ DnsDomain = 'fabrikam.com'}
Invoke-CimMethod -MethodName SetDNSDomain -Arguments $args -Query $wql
TCP/IP のみを使用するネットワーク上でも、コンピューター上のいくつかのネットワーク アダプター構成が実際の TCP/IP アダプターではないため、IPEnabled=True
でのフィルター処理が必要です。 すべてのアダプターの RAS、VPN、QoS、およびその他のサービスをサポートする一般的なソフトウェア要素であるため、独自のアドレスはありません。
DHCP 構成タスクの実行
DHCP の詳細を変更するには、DNS 構成と同様に、一連のネットワーク アダプターを操作する必要があります。 WMI を使用して実行できるさまざまなアクションがあります。
DHCP 対応アダプターの検索
コンピューターで DHCP 対応アダプターを検索するには、次のコマンドを使用します。
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter "DHCPEnabled=$true"
IP 構成の問題があるアダプターを除外するには、IP 対応アダプターのみを取得できます。
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter "IPEnabled=$true and DHCPEnabled=$true"
DHCP プロパティの取得
アダプターの DHCP 関連のプロパティは通常、DHCP
で始まるため、Format-Table
の Property パラメーターを使用して、これらのプロパティのみを表示できます。
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter "IPEnabled=$true and DHCPEnabled=$true" |
Format-Table -Property DHCP*
各アダプターでの DHCP の有効化
すべてのアダプターで DHCP を有効にするには、次のコマンドを使用します。
$wql = 'SELECT * from Win32_NetworkAdapterConfiguration WHERE IPEnabled=True and DHCPEnabled=False'
Invoke-CimMethod -MethodName ReleaseDHCPLease -Query $wql
フィルター ステートメント IPEnabled=True and DHCPEnabled=False
使用すると、既に有効になっている DHCP を有効にすることが回避されます。
特定のアダプターでの DHCP リースの解放と更新
Win32_NetworkAdapterConfiguration クラスのインスタンスには、ReleaseDHCPLease
メソッドと RenewDHCPLease
メソッドがあります。 どちらも同じ方法で使用されます。 一般に、特定のサブネット上のアダプターのアドレスを解放または更新するだけで済む場合は、これらのメソッドを使用します。 サブネット上のアダプターをフィルター処理する最も簡単な方法は、そのサブネットにゲートウェイを使用するアダプター構成のみを選択することです。 たとえば、次のコマンドは、192.168.1.254 から DHCP リースを取得しているローカル コンピューター上のアダプター上のすべての DHCP リースを解放します。
$wql = 'SELECT * from Win32_NetworkAdapterConfiguration WHERE DHCPServer="192.168.1.1"'
Invoke-CimMethod -MethodName ReleaseDHCPLease -Query $wql
DHCP リースを更新するための唯一の変更は、ReleaseDHCPLease
メソッドの代わりに RenewDHCPLease
メソッドを使用することです。
$wql = 'SELECT * from Win32_NetworkAdapterConfiguration WHERE DHCPServer="192.168.1.1"'
Invoke-CimMethod -MethodName RenewDHCPLease -Query $wql
手記
リモート コンピューターでこれらのメソッドを使用する場合は、解放または更新されたリースを使用してアダプター経由でリモート システムに接続している場合、リモート システムへのアクセスが失われる可能性があることに注意してください。
すべてのアダプターでの DHCP リースの解放と更新
Win32_NetworkAdapterConfiguration メソッド、ReleaseDHCPLeaseAll
、RenewDHCPLeaseAll
を使用して、すべてのアダプターでグローバル DHCP アドレスの解放または更新を実行できます。
ただし、このコマンドは、特定のアダプターではなく WMI クラスに適用する必要があります。これは、リースの解放と更新が、特定のアダプターではなくクラスに対してグローバルに実行されるためです。
Invoke-CimMethod
コマンドレットは、クラスのメソッドを呼び出すことができます。
Invoke-CimMethod -ClassName Win32_NetworkAdapterConfiguration -MethodName ReleaseDHCPLeaseAll
同じコマンド形式を使用して、RenewDHCPLeaseAll メソッドを呼び出すことができます。
Invoke-CimMethod -ClassName Win32_NetworkAdapterConfiguration -MethodName RenewDHCPLeaseAll
ネットワーク共有の作成
ネットワーク共有を作成するには、Win32_Shareの Create
メソッドを使用します。
Invoke-CimMethod -ClassName Win32_Share -MethodName Create -Arguments @{
Path = 'C:\temp'
Name = 'TempShare'
Type = [uint32]0 #Disk Drive
MaximumAllowed = [uint32]25
Description = 'test share of the temp folder'
}
これは、Windows 上の次の net share
コマンドと同じです。
net share tempshare=c:\temp /users:25 /remark:"test share of the temp folder"
パラメーターを受け取る WMI クラスのメソッドを呼び出すには、使用可能なパラメーターとそれらのパラメーターの型を知っている必要があります。 たとえば、次のコマンドを使用して、Win32_Class のメソッドを一覧表示できます。
(Get-CimClass -ClassName Win32_Share).CimClassMethods
Name ReturnType Parameters Qualifiers
---- ---------- ---------- ----------
Create UInt32 {Access, Description, MaximumAllowed, Name…} {Constructor, Implemented, MappingStrings, Stati…
SetShareInfo UInt32 {Access, Description, MaximumAllowed} {Implemented, MappingStrings}
GetAccessMask UInt32 {} {Implemented, MappingStrings}
Delete UInt32 {} {Destructor, Implemented, MappingStrings}
次のコマンドを使用して、Create
メソッドのパラメーターを一覧表示します。
(Get-CimClass -ClassName Win32_Share).CimClassMethods['Create'].Parameters
Name CimType Qualifiers ReferenceClassName
---- ------- ---------- ------------------
Access Instance {EmbeddedInstance, ID, In, MappingStrings…}
Description String {ID, In, MappingStrings, Optional}
MaximumAllowed UInt32 {ID, In, MappingStrings, Optional}
Name String {ID, In, MappingStrings}
Password String {ID, In, MappingStrings, Optional}
Path String {ID, In, MappingStrings}
Type UInt32 {ID, In, MappingStrings}
また、Win32_Share クラスの Create メソッドのドキュメントを参照することもできます。
ネットワーク共有の削除
Win32_Shareを使用してネットワーク共有を削除できますが、Win32_Share クラスではなく、削除する特定のインスタンスを取得する必要があるため、プロセスは共有の作成とは若干異なります。 次の例では、TempShare 共有を削除します。
$wql = 'SELECT * from Win32_Share WHERE Name="TempShare"'
Invoke-CimMethod -MethodName Delete -Query $wql
Windows アクセス可能なネットワーク ドライブの接続
New-PSDrive
コマンドレットは、ネットワーク共有にマップされた PowerShell ドライブを作成できます。
New-PSDrive -Name "X" -PSProvider "FileSystem" -Root "\\Server01\Public"
ただし、この方法で作成されたドライブは、作成された PowerShell セッションでのみ使用できます。 PowerShell の外部 (または他の PowerShell セッション) で使用できるドライブをマップするには、Persist パラメーターを使用する必要があります。
New-PSDrive -Persist -Name "X" -PSProvider "FileSystem" -Root "\\Server01\Public"
手記
永続的にマップされたドライブは、管理者権限のあるコンテキストで実行されている場合に利用できないことがあります。 これは、Windows UAC の既定の動作です。 詳細については、次の記事を参照してください。
- UAC が資格情報の入力を求めるように構成されている場合、マップされたドライブは昇格したプロンプトから使えません
PowerShell