Test-Connection
將ICMP回應要求封包或 Ping 傳送至一或多部電腦。
語法
Test-Connection
[-ComputerName] <String[]>
[-AsJob]
[-Authentication <AuthenticationLevel>]
[-BufferSize <Int32>]
[-Count <Int32>]
[-Impersonation <ImpersonationLevel>]
[-ThrottleLimit <Int32>]
[-TimeToLive <Int32>]
[-Delay <Int32>]
[<CommonParameters>]
Test-Connection
[-ComputerName] <String[]>
[-Source] <String[]>
[-AsJob]
[-Authentication <AuthenticationLevel>]
[-BufferSize <Int32>]
[-Count <Int32>]
[-Credential <PSCredential>]
[-Impersonation <ImpersonationLevel>]
[-ThrottleLimit <Int32>]
[-TimeToLive <Int32>]
[-Delay <Int32>]
[<CommonParameters>]
Test-Connection
[-ComputerName] <String[]>
[-Authentication <AuthenticationLevel>]
[-BufferSize <Int32>]
[-Count <Int32>]
[-Impersonation <ImpersonationLevel>]
[-TimeToLive <Int32>]
[-Delay <Int32>]
[-Quiet]
[<CommonParameters>]
Description
Test-Connection
Cmdlet 會將因特網控制訊息通訊協定 (ICMP) 回應要求封包或 ping 傳送至一或多部遠端電腦,並傳回回應回應回復。 您可以使用此 Cmdlet 來判斷是否可以透過 IP 網路連絡特定電腦。
您可以使用 Test-Connection
的參數來指定傳送和接收計算機、以背景工作方式執行命令、設定逾時和 ping 數目,以及設定連線和驗證。
不同於熟悉的 ping 命令,Test-Connection
會傳回您可以在 PowerShell 中調查的 Win32_PingStatus 物件。
Quiet 參數會針對每個測試的連接傳回 System.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:將來自數部計算機的回應要求傳送至計算機
此範例會將來自不同來源計算機的 Ping 傳送至單一遠端電腦 Server01。
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
會使用 TargetName 參數來指定 Server01。
Count 參數會指定三個 ping 會傳送至 Server01 電腦,且延遲 為 2 秒間隔。
當 Ping 回應預期花費的時間比平常長時,您可能會使用這些選項,可能是因為躍點數目延長或高流量網路狀況。
範例 5:以背景工作身分執行測試
此範例示範如何將 Test-Connection
命令當做 PowerShell 背景工作來執行。
$job = Test-Connection -ComputerName (Get-Content Servers.txt) -AsJob
if ($job.JobStateInfo.State -ne "Running") {$Results = Receive-Job $job}
Test-Connection
命令會偵測企業中的許多電腦。
ComputerName 參數的值是 Get-Content
命令,會從 Servers.txt file
讀取計算機名稱清單。 此命令會使用 AsJob 參數,將命令當做背景工作執行,並將作業儲存在 $job
變數中。
if
命令會檢查作業是否仍在執行中。 如果作業未執行,Receive-Job
取得結果,並將其儲存在 $Results
變數中。
範例 6:使用認證 Ping 遠端電腦
此命令會使用 Test-Connection
Cmdlet 來 Ping 遠端電腦。
Test-Connection Server55 -Credential Domain55\User01 -Impersonation Identify
此指令會使用 Credential 參數來指定具有 ping 遠端電腦許可權的使用者帳戶,以及 模擬 參數,將模擬層級變更為 Identify。
範例 7:只有在連線測試成功時,才建立會話
只有在至少一個傳送到計算機的 Ping 成功時,這個範例才會在 Server01 計算機上建立會話。
if (Test-Connection -ComputerName Server01 -Quiet) {New-PSSession Server01}
if
命令會使用 Test-Connection
Cmdlet 來 Ping Server01 計算機。 此命令會使用 Quiet 參數,這個參數會傳回 布爾值 值,而不是 Win32_PingStatus 物件。 如果四個 ping 中的任何一個成功,則值為 $True
,否則 $False
。
如果 Test-Connection
命令傳回 $True
值,命令會使用 New-PSSession
Cmdlet 來建立 PSSession。
參數
-AsJob
表示此 Cmdlet 會以背景工作的形式執行。
若要使用此參數,本機和遠端電腦必須設定為遠端處理,而且,在 Windows Vista 和更新版本的 Windows 作業系統上,您必須使用 [以系統管理員身分執行] 選項 來開啟 PowerShell
當您指定 AsJob 參數時,命令會立即傳回代表背景工作的物件。 您可以在作業完成時繼續在工作階段中工作。 作業會在本機計算機上建立,而遠端計算機的結果會自動傳回至本機計算機。 若要取得作業結果,請使用 Receive-Job
Cmdlet。
如需 PowerShell 背景工作的詳細資訊,請參閱 about_Jobs 和 about_Remote_Jobs。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Authentication
指定用於 WMI 連線的驗證層級。
Test-Connection
使用 WMI。
有效值如下所示:
- 未變更:驗證層級與上一個命令相同。
- 預設:Windows 驗證。
- 無:無 COM 驗證。
- Connect:連線層級 COM 驗證。
- 通話:通話層級 COM 驗證。
- 封包:封包層級 COM 驗證。
- PacketIntegrity:封包完整性層級 COM 驗證。
- PacketPrivacy:封包隱私權層級 COM 驗證。
預設值為 Packet,其列舉值為 4。 如需此參數值的詳細資訊,請參閱 AuthenticationLevel 列舉。
類型: | AuthenticationLevel |
接受的值: | Default, None, Connect, Call, Packet, PacketIntegrity, PacketPrivacy, Unchanged |
Position: | Named |
預設值: | Packet (enumerated value of 4) |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-BufferSize
指定使用此命令傳送之緩衝區的大小,以位元組為單位。 預設值為 32。
類型: | Int32 |
別名: | Size, Bytes, BS |
Position: | Named |
預設值: | 32 |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-ComputerName
指定要 Ping 的電腦。 以IPv4或IPv6格式輸入電腦名稱或輸入IP位址。 不允許通配符。 這是必要參數。
此參數不依賴 PowerShell 遠端處理。 即使您的電腦未設定為執行遠端命令,您也可以使用 ComputerName 參數。
類型: | String[] |
別名: | CN, IPAddress, __SERVER, Server, Destination |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-Count
指定要傳送的回應要求數目。 預設值為 4。
類型: | Int32 |
Position: | Named |
預設值: | 4 |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Credential
指定有權從來源電腦傳送 Ping 要求的用戶帳戶。 輸入用戶名稱,例如User01或Domain01\User01,或輸入 PSCredential 物件,例如 Get-Credential
Cmdlet 中的一個。
只有在命令中使用 Source 參數時,Credential 參數才有效。 認證不會影響目的地計算機。
類型: | PSCredential |
Position: | Named |
預設值: | Current user |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Delay
指定 ping 之間的間隔,以秒為單位。
類型: | Int32 |
Position: | Named |
預設值: | 1 (second) |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Impersonation
指定此 Cmdlet 呼叫 WMI 時要使用的模擬層級。
Test-Connection
使用 WMI。
此參數可接受的值如下:
- 預設。 默認模擬。
- 匿名。 隱藏呼叫者的身分識別。
- 識別。 允許物件查詢呼叫端的認證。
- 模擬。 允許物件使用呼叫端的認證。
預設值為 Impersonate。
類型: | ImpersonationLevel |
接受的值: | Default, Anonymous, Identify, Impersonate, Delegate |
Position: | Named |
預設值: | Impersonate |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Quiet
每個測試的連接都會傳回 布爾值 值。 如果 ComputerName 參數指定多部計算機,則會傳回 布爾值 值的陣列。
如果 任何 ping 成功,則會傳回 $True
。
如果 所有 ping 失敗,則會傳回 $False
。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Source
指定 Ping 來源的電腦名稱。 輸入以逗號分隔的計算機名稱清單。 預設值為本機計算機。
類型: | String[] |
別名: | FCN, SRC |
Position: | 1 |
預設值: | Local computer |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-ThrottleLimit
指定可以建立以執行此命令的並行連線數目上限。 如果您省略此參數或輸入 0 值,則會使用預設值 32。
節流限制僅適用於目前的命令,不適用於會話或計算機。
類型: | Int32 |
Position: | Named |
預設值: | 32 |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-TimeToLive
指定封包可以轉送的次數上限。 對於閘道中的每個躍點,路由器等。TimeToLive 值會減少一個。 零時會捨棄封包,並傳回錯誤。 在 Windows中,預設值為 128。 TimeToLive 參數的別名是 TTL。
類型: | Int32 |
別名: | TTL |
Position: | Named |
預設值: | 128 in Windows |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
輸入
None
您無法使用管線將輸入傳送至此 Cmdlet。
輸出
如果您指定 AsJob 參數,此 Cmdlet 會傳回作業物件。
如果您指定 Quiet 參數,則會傳回 布爾值 值。 如果測試了多個連線,則會傳回 布爾值陣列 值。 否則,Test-Connection
會針對每個 ping 傳回 Win32_PingStatus 物件。
備註
此 Cmdlet 會使用 Win32_PingStatus 類別。
Get-WMIObject Win32_PingStatus
命令相當於 Test-Connection
命令。
PowerShell 3.0 中引進了 Source 參數集。