Test-Connection

ICMP エコー要求パケット (ping) を 1 つ以上のコンピューターに送信します。

構文

Test-Connection
    [-AsJob]
    [-DcomAuthentication <AuthenticationLevel>]
    [-WsmanAuthentication <String>]
    [-Protocol <String>]
    [-BufferSize <Int32>]
    [-ComputerName] <String[]>
    [-Count <Int32>]
    [-Impersonation <ImpersonationLevel>]
    [-ThrottleLimit <Int32>]
    [-TimeToLive <Int32>]
    [-Delay <Int32>]
    [<CommonParameters>]
Test-Connection
    [-AsJob]
    [-DcomAuthentication <AuthenticationLevel>]
    [-WsmanAuthentication <String>]
    [-Protocol <String>]
    [-BufferSize <Int32>]
    [-ComputerName] <String[]>
    [-Count <Int32>]
    [-Credential <PSCredential>]
    [-Source] <String[]>
    [-Impersonation <ImpersonationLevel>]
    [-ThrottleLimit <Int32>]
    [-TimeToLive <Int32>]
    [-Delay <Int32>]
    [<CommonParameters>]
Test-Connection
    [-DcomAuthentication <AuthenticationLevel>]
    [-WsmanAuthentication <String>]
    [-Protocol <String>]
    [-BufferSize <Int32>]
    [-ComputerName] <String[]>
    [-Count <Int32>]
    [-Impersonation <ImpersonationLevel>]
    [-TimeToLive <Int32>]
    [-Delay <Int32>]
    [-Quiet]
    [<CommonParameters>]

説明

Test-Connection コマンドレットは、インターネット制御メッセージ プロトコル (ICMP) エコー要求パケット (ping) を 1 つ以上のリモート コンピューターに送信し、エコー応答応答を返します。 このコマンドレットを使用して、特定のコンピューターに IP ネットワーク経由で接続できるかどうかを判断できます。

Test-Connectionのパラメーターを使用して、送受信コンピューターの両方を指定したり、コマンドをバックグラウンド ジョブとして実行したり、タイムアウトと ping の数を設定したり、接続と認証を構成したりできます。

使い慣れた ping コマンドとは異なり、 Test-Connection は PowerShell で調査できる Win32_PingStatus オブジェクトを返します。 Quiet パラメーターは、テストされた各接続の System.Boolean オブジェクトの Boolean 値を返します。 複数の接続をテストすると、 Boolean 値の配列が返されます。

例 1: リモート コンピューターにエコー要求を送信する

この例では、ローカル コンピューターから Server01 コンピューターにエコー要求パケットを送信します。

Test-Connection -ComputerName Server01

Source        Destination     IPV4Address     IPV6Address  Bytes    Time(ms)
------        -----------     -----------     -----------  -----    --------
ADMIN1        Server01         10.59.137.44                32       0
ADMIN1        Server01         10.59.137.44                32       0
ADMIN1        Server01         10.59.137.44                32       0
ADMIN1        Server01         10.59.137.44                32       1

Test-Connection は、 ComputerName パラメーターを使用して Server01 コンピューターを指定します。

例 2: 複数のコンピューターにエコー要求を送信する

この例では、ローカル コンピューターから複数のリモート コンピューターに ping を送信します。

Test-Connection -ComputerName Server01, Server02, Server12

例 3: 複数のコンピューターから 1 台のコンピューターにエコー要求を送信する

この例では、異なるソース コンピューターから 1 台のリモート コンピューター Server01 に ping を送信します。

Test-Connection -Source Server02, Server12, localhost -ComputerName Server01 -Credential Domain01\Admin01

Test-Connection は、 Credential パラメーターを使用して、ソース コンピューターから ping 要求を送信するアクセス許可を持つユーザーの資格情報を指定します。 複数のポイントからの接続の待機時間をテストするには、このコマンド形式を使用します。

例 4: パラメーターを使用してテスト コマンドをカスタマイズする

この例では、 Test-Connection のパラメーターを使用してコマンドをカスタマイズします。 ローカル コンピューターからリモート コンピューターに ping テストが送信されます。

Test-Connection -ComputerName Server01 -Count 3 -Delay 2 -TTL 255 -BufferSize 256 -ThrottleLimit 32

Test-Connection は、 ComputerName パラメーターを使用して Server01 を指定します。 Count パラメーターは、Delay 2 秒間隔で 3 つの ping を Server01 コンピューターに送信することを指定します。

これらのオプションは、ホップ数が長いか、トラフィックの多いネットワーク状態が原因で、ping 応答に通常よりも長い時間がかかると予想される場合に使用できます。

例 5: バックグラウンド ジョブとしてテストを実行する

この例では、powerShell バックグラウンド ジョブとして Test-Connection コマンドを実行する方法を示します。

$job = Test-Connection -ComputerName (Get-Content Servers.txt) -AsJob
if ($job.JobStateInfo.State -ne "Running") {$Results = Receive-Job $job}

Test-Connection コマンドは、企業内の多くのコンピューターに ping を実行します。 ComputerName パラメーターの値は、Servers.txt fileからコンピューター名の一覧を読み取るGet-Content コマンドです。 このコマンドは、 AsJob パラメーターを使用してバックグラウンド ジョブとしてコマンドを実行し、ジョブを $job 変数に保存します。

if コマンドは、ジョブがまだ実行されていないことを確認します。 ジョブが実行されていない場合、 Receive-Job は結果を取得し、 $Results 変数に格納します。

例 6: 資格情報を使用してリモート コンピューターに ping を実行する

このコマンドでは、 Test-Connection コマンドレットを使用してリモート コンピューターに ping を実行します。

Test-Connection Server55 -Credential Domain55\User01 -Impersonation Identify

このコマンドでは、 Credential パラメーターを使用して、リモート コンピューターに ping を実行するアクセス許可を持つユーザー アカウントを指定し、 Impersonation パラメーターを使用して偽装レベルを Identify に変更します。

例 7: 接続テストが成功した場合にのみセッションを作成する

この例では、コンピューターに送信された ping の少なくとも 1 つが成功した場合にのみ、Server01 コンピューターにセッションを作成します。

if (Test-Connection -ComputerName Server01 -Quiet) {New-PSSession Server01}

if コマンドは、Test-Connection コマンドレットを使用して Server01 コンピューターに ping を実行します。 このコマンドでは、Quiet パラメーターを使用します。このパラメーターは、Win32_PingStatus オブジェクトの代わりに Boolean 値を返します。 この値は、4 つの ping のいずれかが成功した場合に $True され、それ以外の場合は $False

Test-Connection コマンドが $True の値を返す場合、コマンドは New-PSSession コマンドレットを使用してPSSessionを作成します。

パラメーター

-AsJob

このコマンドレットがバックグラウンド ジョブとして実行されることを示します。 AsJob パラメーターを指定すると、コマンドはすぐにバックグラウンド ジョブを表すオブジェクトを返します。 ジョブが完了しても、引き続きセッションで作業できます。 ジョブの結果を取得するには、 Receive-Job コマンドレットを使用します。

PowerShell バックグラウンド ジョブの詳細については、「 about_Jobsabout_Remote_Jobs」を参照してください。

型:SwitchParameter
配置:Named
規定値:False
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-BufferSize

このコマンドで送信されるバッファーのサイズをバイト単位で指定します。 既定値は 32 です。

型:Int32
Aliases:Size, Bytes, BS
配置:Named
規定値:32
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-ComputerName

ping するコンピューターを指定します。 コンピューター名を入力するか、IP アドレスを IPv4 または IPv6 形式で入力します。 ワイルドカード文字は使用できません。 このパラメーターは必須です。

このパラメーターは、PowerShell リモート処理には依存しません。 コンピューターがリモート コマンドを実行するように構成されていない場合でも、 ComputerName パラメーターを使用できます。

Note

ComputerName パラメーターの名前は、PowerShell 6.0 以降では TargetName に変更されます。

型:String[]
Aliases:CN, IPAddress, __SERVER, Server, Destination
配置:0
規定値:None
必須:True
パイプライン入力を受け取る:True
ワイルドカード文字を受け取る:False

-Count

送信するエコー要求の数を指定します。 既定値は 4 ですが、

型:Int32
配置:Named
規定値:4
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Credential

送信元コンピューターから ping 要求を送信するアクセス許可を持つユーザー アカウントを指定します。 User01 や Domain01\User01 などのユーザー名を入力するか、 PSCredential オブジェクト ( Get-Credential コマンドレットのオブジェクトなど) を入力します。

Credential パラメーターは、Source パラメーターがコマンドで使用されている場合にのみ有効です。 資格情報は、対象のコンピューターには影響しません。

型:PSCredential
配置:Named
規定値:Current user
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-DcomAuthentication

このコマンドレットが WMI で使用する認証レベルを指定します。 Test-Connection は WMI を使用します。 このパラメーターの有効値は、次のとおりです。

  • 既定。 Windows 認証
  • なし。 COM 認証なし
  • 接続。 接続レベルの COM 認証
  • 呼び出す。 呼び出しレベルの COM 認証
  • パケット。 パケット レベルの COM 認証
  • PacketIntegrity。 パケット整合性レベルの COM 認証
  • PacketPrivacy。 パケット プライバシー レベルの COM 認証
  • 変更なし。 前のコマンドと同じ

既定値は Packet で、列挙値は 4 です。 このパラメーターの値の詳細については、「 AuthenticationLevel 列挙型」を参照してください。

型:AuthenticationLevel
Aliases:Authentication
指定可能な値:Default, None, Connect, Call, Packet, PacketIntegrity, PacketPrivacy, Unchanged
配置:Named
規定値:Packet (enumerated value of 4)
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Delay

ping 間の間隔を秒単位で指定します。

型:Int32
配置:Named
規定値:1 (second)
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Impersonation

このコマンドレットが WMI を呼び出すときに使用する偽装レベルを指定します。 Test-Connection は WMI を使用します。

このパラメーターに使用できる値は次のとおりです。

  • 既定。 既定の偽装。
  • 匿名。 呼び出し元の ID は非表示になります。
  • 識別する。 オブジェクトによる呼び出し元の資格情報のクエリが許可されます。
  • 偽装する。 オブジェクトによる呼び出し元の資格情報の使用が許可されます。

既定値は Impersonate です。

型:ImpersonationLevel
指定可能な値:Default, Anonymous, Identify, Impersonate, Delegate
配置:Named
規定値:Impersonate
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Protocol

プロトコルを指定します。 このパラメーターに使用できる値は、DCOM と WSMan です。

型:String
指定可能な値:DCOM, WSMan
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Quiet

Quiet パラメーターは、System.Boolean オブジェクトの Boolean 値を返します。 このパラメーターを使用すると、すべてのエラーが抑制されます。

テストされた各接続は、 Boolean 値を返します。 ComputerNameパラメーターが複数のコンピューターを指定する場合は、Boolean 値の配列が返されます。

any ping が成功すると、$Trueが返されます。

all ping が失敗した場合は、$Falseが返されます。

型:SwitchParameter
配置:Named
規定値:False
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Source

ping の送信元コンピューターの名前を指定します。 コンピューター名のコンマ区切りのリストを入力します。 既定値はローカル コンピューターです。

型:String[]
Aliases:FCN, SRC
配置:1
規定値:Local computer
必須:True
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-ThrottleLimit

このコマンドを実行するために確立できる最大コンカレント接続数を指定します。 このパラメーターを省略した場合、または値 0 を入力した場合は、既定値の 32 が使用されます。

スロットル制限は現在のコマンドのみに適用され、セッションまたはコンピューターには適用されません。

型:Int32
配置:Named
規定値:32
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-TimeToLive

パケットを転送できる最大時間を指定します。 ゲートウェイ、ルーターなどのホップごとに、 TimeToLive 値が 1 ずつ減少します。 ゼロの場合、パケットは破棄され、エラーが返されます。 Windows では、既定値は 128 です。 TimeToLive パラメーターのエイリアスは TTL です。

型:Int32
Aliases:TTL
配置:Named
規定値:128 in Windows
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-WsmanAuthentication

このコマンドレットが WSMan プロトコルを使用するときにユーザー資格情報を認証するために使用されるメカニズムを指定します。 このパラメーターの有効値は、次のとおりです。

  • 基本
  • CredSSP
  • 既定値
  • Digest
  • Kerberos
  • 交渉する。

既定値は Default です。

このパラメーターの値の詳細については、「 AuthenticationMechanism 列挙型を参照してください。

注意: ユーザー資格情報が認証されるリモート コンピューターにユーザー資格情報が渡される資格情報セキュリティ サービス プロバイダー (CredSSP) 認証は、リモート ネットワーク共有へのアクセスなど、複数のリソースで認証を必要とするコマンド用に設計されています。 このメカニズムを使用すると、リモート操作のセキュリティ リスクが高まります。 リモート コンピューターのセキュリティが低下している場合は、そのリモート コンピューターに渡される資格情報を使用してネットワーク セッションが制御される場合があります。

このパラメーターは Windows PowerShell 3.0 で導入されました。

型:String
指定可能な値:Default, Basic, Negotiate, CredSSP, Digest, Kerberos
配置:Named
規定値:Default
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

入力

None

このコマンドレットにオブジェクトをパイプすることはできません。

出力

ManagementObject

既定では、このコマンドレットは ping 応答ごとに Win32_PingStatus オブジェクトを返します。

System.Management.Automation.RemotingJob

AsJob パラメーターを指定すると、このコマンドレットはジョブ オブジェクトを返します。

Boolean

Quiet パラメーターを使用すると、Boolean 値が返されます。 コマンドレットが複数の接続をテストすると、 Boolean 値の配列が返されます。

メモ

このコマンドレットでは、 Win32_PingStatus クラスを使用します。 Get-WMIObject Win32_PingStatus コマンドは、Test-Connection コマンドと同じです。

Source パラメーター セットは、PowerShell 3.0 で導入されました。