次の方法で共有


ネットワーク タスクの実行

このサンプルは、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-ObjectExpandProperty パラメーターを使用する必要があります。

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 プロパティは、実際には配列です。 定義の中かっこは、IPAddressSystem.String 値ではなく、System.String 値の配列であることを示します。

IP 構成データの一覧表示

各ネットワーク アダプターの詳細な IP 構成データを表示するには、次のコマンドを使用します。

Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true

ネットワーク アダプター構成オブジェクトの既定の表示は、使用可能な情報の非常に小さいセットです。 詳細な検査とトラブルシューティングを行うには、Select-Object または Format-Listなどの書式設定コマンドレットを使用して、表示するプロパティを指定します。

最新の TCP/IP ネットワークでは、IPX または WINS プロパティに興味がない可能性があります。 Select-ObjectExcludeProperty パラメーターを使用すると、名前が "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-TableAutosize パラメーターは、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_NetworkAdapterConfigurationSetDNSDomain メソッドを使用します。 Invoke-CimMethodQuery パラメーターは、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 メソッド、ReleaseDHCPLeaseAllRenewDHCPLeaseAllを使用して、すべてのアダプターでグローバル DHCP アドレスの解放または更新を実行できます。 ただし、このコマンドは、特定のアダプターではなく WMI クラスに適用する必要があります。これは、リースの解放と更新が、特定のアダプターではなくクラスに対してグローバルに実行されるためです。 Invoke-CimMethod コマンドレットは、クラスのメソッドを呼び出すことができます。

Invoke-CimMethod -ClassName Win32_NetworkAdapterConfiguration -MethodName ReleaseDHCPLeaseAll

同じコマンド形式を使用して、RenewDHCPLeaseAll メソッドを呼び出すことができます。

Invoke-CimMethod -ClassName Win32_NetworkAdapterConfiguration -MethodName RenewDHCPLeaseAll

ネットワーク共有の作成

ネットワーク共有を作成するには、Win32_ShareCreate メソッドを使用します。

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 の既定の動作です。 詳細については、次の記事を参照してください。