將 ICMP 回應要求封包 ("Ping") 傳送到一台或多台電腦。

語法

Test-Connection [-ComputerName] <string[]> [[-Source] <string[]>] [-AsJob] [-Authentication {<Default> | <None> | <Connect> | <Call> | <Packet> | <PacketIntegrity> | <PacketPrivacy> | <Unchanged>}] [-BufferSize <int>] [-Count <int>] [-Credential <PSCredential>] [-Delay <int>] [-Impersonation {<Default> | <Anonymous> | <Identify> | <Impersonate> | <Delegate>}] [-Quiet] [-ThrottleLimit <int>] [-TimeToLive <int>] [<CommonParameters>]

描述

Test-Connection Cmdlet 將網際網路控制訊息通訊協定 (ICMP) 回應要求封包 ("Ping") 傳送到一台或多台遠端電腦,然後傳回回應 (Echo) 回應 (Response) 回覆。您可以使用這個 Cmdlet 判斷是否可以透過網際網路通訊協定 (IP) 網路來聯繫特定電腦。

您可以使用 Test-Connection 的參數同時指定傳送與接收電腦、以背景工作執行命令、設定逾時和 Ping 的次數並且設定連線與驗證。

Test-Connection 會傳回可供您調查 Windows PowerShell 的 Win32_PingStatus 物件,但是您可以使用 Quiet 參數來強制它只傳回布林值,這一點與傳統的 "ping" 命令不同。

參數

-AsJob

以背景工作執行命令。

注意:若要使用這個參數,必須在本機和遠端電腦上設定遠端連線,而且必須在 Windows Vista 與較新版本的 Windows 上,利用 [以系統管理員身分執行] 選項開啟 Windows PowerShell。如需詳細資訊,請參閱 about_Remote_Requirements。

在使用 AsJob 參數時,此命令會立即傳回一個代表背景工作的物件。當工作完成時,您可以繼續在工作階段中執行工作。工作會建立在本機電腦上,而遠端電腦的結果會自動傳回到本機電腦。若要取得工作結果,請使用 Receive-Job Cmdlet。

如需 Windows PowerShell 背景工作的詳細資訊,請參閱 about_Jobs 和 about_Remote_Jobs。

必要?

false

位置?

named

預設值

False

接受管線輸入?

false

接受萬用字元?

false

-Authentication <AuthenticationLevel>

指定要用於 WMI 連線的驗證層級 (Test-Connection 使用 WMI)。

有效的值包括:

Unchanged:驗證等級與前一個命令相同

Default:Windows 驗證。

None:沒有 COM 驗證。

Connect:連線層級的 COM 驗證。

Call:呼叫層級的 COM 驗證。

Packet:封包層級的 COM 驗證

PacketIntegrity:封包完整性層級的 COM 驗證。

PacketPrivacy:封包私密性層級的 COM 驗證

必要?

false

位置?

named

預設值

4

接受管線輸入?

false

接受萬用字元?

false

-BufferSize <int>

指定以這個命令傳送的緩衝區大小,以位元組為單位。預設值為 32。

必要?

false

位置?

named

預設值

32

接受管線輸入?

false

接受萬用字元?

false

-ComputerName <string[]>

指定要 Ping 的電腦。請輸入電腦名稱,或者以 IPv4 或 IPv6 格式輸入 IP 位址。不允許使用萬用字元。此參數為必要項。

此參數並不依存於 Windows PowerShell 遠端。即使沒有將電腦設定成執行遠端命令,也可以使用 ComputerName 參數。

必要?

true

位置?

1

預設值

接受管線輸入?

true (ByPropertyName)

接受萬用字元?

false

-Count <int>

指定要傳送的回應要求數量。預設值為 4。

必要?

false

位置?

named

預設值

4

接受管線輸入?

false

接受萬用字元?

false

-Credential <PSCredential>

指定具有執行此動作之權限的使用者帳戶。請輸入使用者名稱,例如 "User01" 或 "Domain01\User01",或是輸入 PSCredential 物件,例如由 Get-Credential Cmdlet 所產生的物件。

必要?

false

位置?

named

預設值

Current user

接受管線輸入?

false

接受萬用字元?

false

-Delay <int>

指定兩個 Ping 前後間隔的時間,以秒為單位。

必要?

false

位置?

named

預設值

1 (second)

接受管線輸入?

false

接受萬用字元?

false

-Impersonation <ImpersonationLevel>

指定呼叫 WMI 時所使用的模擬層級 (Test-Connection 使用 WMI)。預設值為 "Impersonate"。

有效的值包括:

Default:預設模擬。

Anonymous:隱藏呼叫端的識別。

Identify:允許物件查詢呼叫端的認證。

Impersonate:允許物件使用呼叫端的認證。

必要?

false

位置?

named

預設值

3

接受管線輸入?

false

接受萬用字元?

false

-Quiet

如果任何 Ping 作業成功,則會抑制所有錯誤並傳回 $True。如果全都失敗,則傳回 $False。

必要?

false

位置?

named

預設值

False

接受管線輸入?

false

接受萬用字元?

false

-Source <string[]>

指定 Ping 來源之電腦的名稱。請輸入以逗號分隔的電腦名稱清單。預設為本機電腦。

必要?

false

位置?

2

預設值

Local computer

接受管線輸入?

false

接受萬用字元?

false

-ThrottleLimit <int>

指定可以建立以執行此命令之同時連線數目的上限。如果您省略這個參數或輸入 0 這個值,則會使用預設值 32。

節流閥限制只適用於目前的命令,並不適用於工作階段或電腦。

必要?

false

位置?

named

預設值

32

接受管線輸入?

false

接受萬用字元?

false

-TimeToLive <int>

指定每一個回應要求封包 ("Ping") 處於現用狀態的時間上限,以秒為單位。預設值為 80 (秒)。TimeToLive 參數的別名是 TTL。

必要?

false

位置?

named

預設值

80

接受管線輸入?

false

接受萬用字元?

false

<CommonParameters>

這個 Cmdlet 支援一般參數:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。如需詳細資訊,請參閱 about_Commonparameters.

輸入和輸出

輸入型別是可經由管道輸出至 Cmdlet 的物件型別。傳回型別則是 Cmdlet 所傳回的物件型別。

輸入

您無法經由管道將輸入輸出至這個 Cmdlet。

輸出

System.Management.ManagementObject#root\cimv2\Win32_PingStatus、System.Management.Automation.RemotingJob、System.Boolean

當使用 AsJob 參數時,此 Cmdlet 會傳回工作物件。當您使用 Quiet 參數時,它會傳回布林值。否則,這個 Cmdlet 會針對每一個 Ping 傳回 Win32_PingStatus 物件。

附註

這個 Cmdlet 使用 Win32_PingStatus 類別。"get-wmiojbect win32_pingstatus" 命令等同於 Test-Connection 命令。

範例 1

C:\PS>test-connection server01

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

描述
-----------
這個命令會將回應要求封包 ("Pings") 從本機電腦傳送到 Server01 電腦。這個命令使用 ComputerName 參數指定 Server01 電腦,但是省略選擇性的參數名稱。






範例 2

C:\PS>test-connection -computername server01, server02, server12 -credential domain01\user01

描述
-----------
這個命令會將 Ping 從本機電腦傳送到多部遠端電腦。該命令使用 Credential 參數指定具有 Ping 所有遠端電腦之權限的使用者帳戶。






範例 3

C:\PS>test-connection -source Server02, Server 12, localhost -computername Server01

描述
-----------
這個命令會將 Ping 從不同的來源電腦傳送到單一遠端電腦 Server01。使用這個命令格式,測試多個點的連線延遲。






範例 4

C:\PS>test-connection -computername Server01 -count 3 -delay 2 -TTL 256 -buffersize 256 -throttle 32

描述
-----------
這個命令會將三個 Ping 從本機電腦傳送到 Server01 電腦,它會使用 Test-Connection 的參數自訂命令。

因為躍點的擴充數量或高流量網路狀態,所以在 Ping 回應預期需要比一般更久的時間時,請使用這個命令格式。






範例 5

C:\PS>$job = test-connection -computername (get-content servers.txt) -asjob

C:\PS> if ($job.jobstateinfo.state -ne "Running") {$results = receive-job $job}

描述
-----------
這個範例示範如何以 Windows PowerShell 背景工作執行 Test-Connection 命令。

第一個命令會使用 Test-Connection Cmdlet,Ping 公司中的許多台電腦。ComputerName 參數的值是讀取 Servers.txt 檔案中電腦名稱清單的 Get-Content 命令。這個命令會使用 AsJob 參數,將命令當做背景工作來執行,

第二個命令確認工作是否仍然處於沒有執行的狀態,如果沒有執行,則會使用 Receive-Job 命令取得結果並且將結果儲存在 $results 變數。






範例 6

C:\PS>test-connection Server55 -credential domain55\user01 -impersonation Identify

描述
-----------
這個命令使用 Test-Connection Cmdlet 以 Ping 遠端電腦。該命令使用 Credential 參數指定具有連線至遠端電腦之權限的使用者帳戶,並且使用 Impersonation 參數將模擬層級變更為 "Identify"。






範例 7

C:\PS>if (test-connection -computername Server01 -quiet) {new-pssession Server01}

描述
-----------
只有當至少有一個 Ping 成功傳送給電腦時,這個命令才會在 Server01 上建立 PSSession。

此命令會使用 Test-Connection Cmdlet 來 Ping 電腦 Server01。此命令會使用 Quiet 參數,此參數會傳回布林值,而不是 Win32_PingStatus 物件。如果四個 Ping 作業中的任何一個成功,此值會是 $True,否則為 false。

如果 Test-Connection 命令傳回 $True 的值,此命令會使用 New-PSSession Cmdlet 建立 PSSession。






請參閱




目錄