Get-PSSession
取得本機和遠端電腦上的PowerShell工作階段。
語法
Get-PSSession
[-Name <String[]>]
[<CommonParameters>]
Get-PSSession
[-ComputerName] <String[]>
[-ApplicationName <String>]
[-ConfigurationName <String>]
[-Name <String[]>]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-Port <Int32>]
[-UseSSL]
[-ThrottleLimit <Int32>]
[-State <SessionFilterState>]
[-SessionOption <PSSessionOption>]
[<CommonParameters>]
Get-PSSession
[-ComputerName] <String[]>
[-ApplicationName <String>]
[-ConfigurationName <String>]
-InstanceId <Guid[]>
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-Port <Int32>]
[-UseSSL]
[-ThrottleLimit <Int32>]
[-State <SessionFilterState>]
[-SessionOption <PSSessionOption>]
[<CommonParameters>]
Get-PSSession
[-ConnectionUri] <Uri[]>
[-ConfigurationName <String>]
[-AllowRedirection]
-InstanceId <Guid[]>
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-ThrottleLimit <Int32>]
[-State <SessionFilterState>]
[-SessionOption <PSSessionOption>]
[<CommonParameters>]
Get-PSSession
[-ConnectionUri] <Uri[]>
[-ConfigurationName <String>]
[-AllowRedirection]
[-Name <String[]>]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-ThrottleLimit <Int32>]
[-State <SessionFilterState>]
[-SessionOption <PSSessionOption>]
[<CommonParameters>]
Get-PSSession
[-ConfigurationName <String>]
[-Name <String[]>]
[-State <SessionFilterState>]
-ContainerId <String[]>
[<CommonParameters>]
Get-PSSession
[-ConfigurationName <String>]
-InstanceId <Guid[]>
[-State <SessionFilterState>]
-ContainerId <String[]>
[<CommonParameters>]
Get-PSSession
[-ConfigurationName <String>]
[-Name <String[]>]
[-State <SessionFilterState>]
-VMId <Guid[]>
[<CommonParameters>]
Get-PSSession
[-ConfigurationName <String>]
-InstanceId <Guid[]>
[-State <SessionFilterState>]
-VMId <Guid[]>
[<CommonParameters>]
Get-PSSession
[-ConfigurationName <String>]
[-Name <String[]>]
[-State <SessionFilterState>]
-VMName <String[]>
[<CommonParameters>]
Get-PSSession
[-ConfigurationName <String>]
-InstanceId <Guid[]>
[-State <SessionFilterState>]
-VMName <String[]>
[<CommonParameters>]
Get-PSSession
[-InstanceId <Guid[]>]
[<CommonParameters>]
Get-PSSession
[-Id] <Int32[]>
[<CommonParameters>]
Description
Cmdlet Get-PSSession
會在本機和遠端電腦上取得使用者管理的 PowerShell 工作階段 (PSSessions)。
從 Windows PowerShell 3.0 開始,會話會儲存在每一個連線的遠端電腦上。 您可以使用 的 Get-PSSession
ComputerName 或 ConnectionUri 參數來取得連線到本機電腦或遠端電腦的會話,即使它們不是在目前的會話中建立也一樣。
如果沒有參數, Get-PSSession
取得在目前會話中建立的所有會話。
使用篩選參數,包括 Name、ID、InstanceID、State、ApplicationName 和 ConfigurationName,從傳回的Get-PSSession
工作階段中選取 。
使用其餘參數來設定當您使用 ComputerName 或 ConnectionUri 參數時,命令執行所在的Get-PSSession
暫存連線。
注意
在 Windows PowerShell 2.0 中,沒有參數, Get-PSSession
取得在目前會話中建立的所有會話。 ComputerName 參數會取得在目前工作階段中建立的工作階段,並連線到指定的電腦。
如需 PowerShell 會話的詳細資訊,請參閱 about_PSSessions。
範例
範例 1:取得在目前會話中建立的會話
Get-PSSession
此命令會取得目前會話中建立的所有 PSSession 。 它不會取得 在其他會話或其他計算機上建立的 PSSession ,即使它們連線到這部計算機也一樣。
範例 2:取得連線到本機計算機的會話
Get-PSSession -ComputerName "localhost"
此命令會取得 連線到本機計算機的 PSSession 。 若要指出本機電腦,請輸入電腦名稱、localhost 或點 (.
)
此命令會傳回本機計算機上的所有會話,即使它們是在不同的會話或不同計算機上建立的。
範例 3:取得連線到計算機的會話
Get-PSSession -ComputerName "Server02"
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
2 Session3 Server02 Disconnected ITTasks Busy
1 ScheduledJobs Server02 Opened Microsoft.PowerShell Available
3 Test Server02 Disconnected Microsoft.PowerShell Busy
此命令會取得 連接到 Server02 計算機的 PSSession 。
此命令會傳回 Server02 上的所有會話,即使這些會話是在不同會話或不同電腦上建立的。
輸出顯示其中兩個Disconnected
Busy
工作階段的狀態和可用性。
它們是在不同的會話中建立的,目前正在使用中。 會話 ScheduledJobs
是 Opened
和 Available
,是在目前的會話中建立的。
範例 4:儲存此命令的結果
New-PSSession -ComputerName Server01, Server02, Server03
$s1, $s2, $s3 = Get-PSSession
此範例示範如何將命令的結果 Get-PSSession
儲存在多個變數中。
第一個命令會 New-PSSession
使用 Cmdlet 在三部遠端電腦上建立 PSSession 。
第二個命令會使用 Cmdlet 來取得三個 Get-PSSession
PSSession。 然後,它會將每個 PSSession 儲存在個別的 變數中。
當 PowerShell 將物件的陣列指派給變數數位時,它會將第一個物件指派給第一個變數、第二個物件指派給第二個變數等等。 如果物件數目超過變數,則會將所有剩餘的物件指派給陣列中的最後一個變數。 如果變數超過物件,則不會使用額外的變數。
範例 5:使用實例標識碼刪除會話
Get-PSSession | Format-Table -Property ComputerName, InstanceID
$s = Get-PSSession -InstanceID a786be29-a6bb-40da-80fb-782c67f7db0f
Remove-PSSession -Session $s
此範例示範如何使用其實例標識碼取得 PSSession ,然後刪除 PSSession。
第一個命令會取得目前會話中建立的所有 PSSession 。 它會將 PSSession 傳送至 Format-Table
Cmdlet,以顯示每個 PSSession 的 ComputerName 和 InstanceID 屬性。
第二個命令會 Get-PSSession
使用 Cmdlet 來取得特定的 PSSession ,並將它儲存在變數中 $s
。 此命令會 使用 InstanceID 參數來識別 PSSession。
第三個命令會使用 Remove-PSSession Cmdlet 來刪除變數中的 $s
PSSession。
範例 6:取得具有特定名稱的工作階段
此範例中的命令會尋找具有特定名稱格式的會話,並使用特定的會話組態,然後連線到會話。 您可以使用這樣的命令來尋找同事開始工作的會話,並連線到完成工作。
Get-PSSession -ComputerName Server02, Server12 -Name BackupJob* -ConfigurationName ITTasks -SessionOption @{OperationTimeout=240000}
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
3 BackupJob04 Server02 Disconnected ITTasks None
$s = Get-PSSession -ComputerName Server02 -Name BackupJob04 -ConfigurationName ITTasks | Connect-PSSession
$s
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
5 BackupJob04 Server02 Opened ITTasks Available
第一個命令會取得 Server02 和 Server12 遠端電腦上的工作階段,這些電腦的名稱開頭 BackupJob
為 並使用 ITTasks
工作階段組態。此命令會 使用 Name 參數來指定名稱模式和 ConfigurationName 參數來指定工作階段組態。 SessionOption 參數的值是哈希表,會將 OperationTimeout 的值設定為240000
毫秒(4 分鐘)。 此設定可讓命令有更多時間完成。 ConfigurationName 和 SessionOption 參數可用來設定在每部電腦上執行 Cmdlet 的 Get-PSSession
暫存會話。輸出顯示命令會 BackupJob04
傳回會話。 會話已中斷連線 ,而可用性 為 None
,表示它未使用中。
第二個命令會 Get-PSSession
使用 Cmdlet 來 BackupJob04
取得會話,而 Connect-PSSession
Cmdlet 則用來連線到會話。 命令會將會話儲存在變數中 $s
。
第三個命令會取得 變數中的 $s
會話。 輸出顯示 Connect-PSSession
命令成功。 會話處於 開啟 狀態,可供使用。
範例 7:使用其標識碼取得會話
Get-PSSession -Id 2
此命令會取得標識碼為2
的 PSSession。 由於ID屬性的值只在目前的工作階段中是唯一的,因此Id參數只適用於本機命令。
參數
-AllowRedirection
指出此 Cmdlet 允許將此連線重新導向至替代的統一資源識別碼 (URI)。 根據預設,PowerShell 不會重新導向連線。
此參數會設定建立的暫存連接,以使用 ConnectionUri 參數執行Get-PSSession
命令。
此參數是在 Windows PowerShell 3.0 中引進的。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-ApplicationName
指定應用程式的名稱。 此 Cmdlet 只會連線到使用指定應用程式的作業階段。
輸入連線 URI 的應用程式名稱區段。 例如,在下列連線 URI 中,應用程式名稱為 WSMan: http://localhost:5985/WSMAN
。 會話的應用程式名稱會儲存在 會話的 Runspace.ConnectionInfo.AppName 屬性中。
此參數的值是用來選取和篩選會話。 它不會變更會話所使用的應用程式。
類型: | String |
Position: | Named |
預設值: | All sessions |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-Authentication
指定機制,用來驗證執行命令之會話的 Get-PSSession
認證。
此參數會設定建立的暫存連接,以使用 ComputerName 或 ConnectionUri 參數執行Get-PSSession
命令。
此參數可接受的值為:
Default
Basic
CredSSP
Digest
Kerberos
Negotiate
NegotiateWithImplicitCredential
.
預設值是 Default
。
如需此參數值的詳細資訊,請參閱 AuthenticationMechanism 列舉。
警告
認證安全性支援提供者 (CredSSP) 驗證,其中使用者的認證會傳遞至要驗證的遠端電腦,其設計訴求是在多個資源上要求驗證的命令,例如存取遠端網路共用。 此機制會增加遠端作業的安全性風險。 如果遠端電腦遭到入侵,傳遞給它的認證可用來控制網路會話。
此參數是在 Windows PowerShell 3.0 中引進的。
類型: | AuthenticationMechanism |
接受的值: | Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos |
Position: | Named |
預設值: | Default |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-CertificateThumbprint
指定使用者帳戶的數位公鑰憑證 (X509),該用戶帳戶有權建立命令執行所在的 Get-PSSession
會話。 輸入憑證的憑證指紋。
此參數會設定建立的暫存連接,以使用 ComputerName 或 ConnectionUri 參數執行Get-PSSession
命令。
憑證將用於用戶端憑證式驗證。 它們只能對應至本機用戶帳戶;它們不適用於網域帳戶。
若要取得憑證指紋,請使用 Get-Item
PowerShell Cert:
磁碟驅動器中的或 Get-ChildItem
命令。
此參數是在 Windows PowerShell 3.0 中引進的。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-ComputerName
指定計算機名稱的陣列。 取得連接到指定計算機的工作階段。 不允許通配符。 沒有預設值。
從 Windows PowerShell 3.0 開始, PSSession 物件會儲存在每個連線的遠端電腦上。 若要取得指定計算機上的會話,PowerShell 會建立與每部計算機的暫存連線,並執行 Get-PSSession
命令。
輸入 NetBIOS 名稱、IP 位址或一或多部電腦的完整功能變數名稱。 若要指定本機計算機,請輸入計算機名稱 、 localhost
或點 (.
)。
注意
此參數只會從執行 Windows PowerShell 3.0 或更新版本的 PowerShell 的電腦取得會話。 舊版不會儲存會話。
類型: | String[] |
別名: | Cn |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-ConfigurationName
指定組態的名稱。 此 Cmdlet 只會取得使用指定工作階段組態的工作階段。
輸入工作階段組態的組態名稱或完整資源URI。 如果您只指定組態名稱,則前面會加上下列架構 URI: http://schemas.microsoft.com/powershell
。 會話的組態名稱會儲存在 會話的 ConfigurationName 屬性中。
此參數的值是用來選取和篩選會話。 它不會變更會話所使用的會話組態。
如需工作階段設定的詳細資訊,請參閱 about_Session_Configurations。
類型: | String |
Position: | Named |
預設值: | All sessions |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-ConnectionUri
指定 URI,定義命令執行之暫存工作階段 Get-PSSession
的連接端點。 URI 必須完整。
此參數會設定建立的暫存連接,以使用 ConnectionUri 參數執行Get-PSSession
命令。
此字串格式為:
<Transport>://<ComputerName>:<Port\>/<ApplicationName>
預設值為 http://localhost:5985/WSMAN
。
如果您未指定 ConnectionUri,您可以使用 UseSSL、 ComputerName、 Port 和 ApplicationName 參數來指定 ConnectionURI 值。 URI 傳輸區段的有效值為 HTTP 和 HTTPS。 如果您指定具有傳輸區段的連線 URI,但未指定埠,則會使用標準埠建立會話: 80
用於 HTTP 和 443
HTTPS。 若要使用 PowerShell 遠端處理的預設埠,請指定 HTTP 或 5986
HTTPS 的連接埠5985
。
如果目的地計算機將連線重新導向至不同的 URI,除非您在命令中使用 AllowRedirection 參數,否則 PowerShell 會防止重新導向。
此參數是在 Windows PowerShell 3.0 中引進的。
此參數只會從執行 Windows PowerShell 3.0 或更新版本的 Windows PowerShell 的電腦取得會話。 舊版不會儲存會話。
類型: | Uri[] |
別名: | URI, CU |
Position: | 0 |
預設值: | Http://localhost:5985/WSMAN |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-ContainerId
指定容器識別碼的陣列。 此 Cmdlet 會啟動具有每個指定容器的互動式會話。 docker ps
使用 命令來取得容器標識碼的清單。 如需詳細資訊,請參閱 docker ps 命令的說明。
類型: | String[] |
Position: | Named |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-Credential
指定用戶認證。 此 Cmdlet 會以指定使用者的許可權執行 命令。 指定有權連線到遠端電腦的用戶帳戶,並執行 Get-PSSession
命令。 預設為目前使用者。
輸入使用者名稱,例如 User01
或 Domain01\User01
,或輸入 Cmdlet 所產生的 Get-Credential
PSCredential 物件。 如果您輸入使用者名稱,系統會提示您輸入密碼。
認證會儲存在 PSCredential 物件中,密碼會儲存為 SecureString。
注意
如需 SecureString 數據保護的詳細資訊,請參閱 SecureString 有多安全?。
此參數會設定為暫存連接,以使用 ComputerName 或 ConnectionUri 參數執行Get-PSSession
命令。
此參數是在 Windows PowerShell 3.0 中引進的。
類型: | PSCredential |
Position: | Named |
預設值: | Current user |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Id
指定工作階段識別碼的陣列。 此 Cmdlet 只會取得具有指定標識符的工作階段。 輸入一或多個識別碼,並以逗號分隔,或使用範圍運算符 (..
) 來指定標識符的範圍。
您無法搭配 ComputerName 參數使用 ID 參數。
標識碼是整數,可唯一識別目前會話中的使用者管理會話。 比 InstanceId 更容易記住和輸入,但只在目前的會話中是唯一的。 會話的標識碼會儲存在會話的ID屬性中。
類型: | Int32[] |
Position: | 0 |
預設值: | All sessions |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-InstanceId
指定工作階段實例識別碼的陣列。 此 Cmdlet 只會取得具有指定實例標識碼的會話。
實例標識碼是 GUID,可唯一識別本機或遠端電腦上的會話。 InstanceID 是唯一的,即使您在 PowerShell 中執行多個作業階段也一定。
會話的實例標識碼會儲存在 會話的 InstanceID 屬性中。
類型: | Guid[] |
Position: | Named |
預設值: | All sessions |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Name
指定工作階段名稱的陣列。 此 Cmdlet 只會取得具有指定易記名稱的工作階段。 允許通配符。
工作階段的易記名稱會儲存在 工作階段的 Name 屬性中。
類型: | String[] |
Position: | Named |
預設值: | All sessions |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | True |
-Port
指定用於命令執行之暫存連線的 Get-PSSession
指定網路埠。 若要連線到遠端電腦,遠端計算機必須接聽連線所使用的埠。 默認埠為 5985
,這是 HTTP 的 WinRM 連接埠,而 5986
是 HTTPS 的 WinRM 連接埠。
使用替代埠之前,您必須在遠端電腦上設定 WinRM 接聽程式,以在該埠接聽。 若要設定接聽程式,請在PowerShell提示字元中輸入下列兩個命令:
Remove-Item -Path WSMan:\Localhost\listener\listener* -Recurse
New-Item -Path WSMan:\Localhost\listener -Transport http -Address * -Port \<port-number\>
此參數會設定為暫存連接,以使用 ComputerName 或 ConnectionUri 參數執行Get-PSSession
命令。
除非您必須,否則請勿使用 Port 參數。 命令中的埠集會套用至執行命令的所有電腦或會話。 替代埠設定可能會防止命令在所有計算機上執行。
此參數是在 Windows PowerShell 3.0 中引進的。
類型: | Int32 |
Position: | Named |
預設值: | 5985, 5986 |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-SessionOption
指定工作階段的進階選項。 輸入 SessionOption 物件,例如您使用 New-PSSessionOption
Cmdlet 建立的物件,或索引鍵是會話選項名稱的哈希表,而值是會話選項值。
如果設定選項,選項的 $PSSessionOption
預設值取決於喜好設定變數的值。 否則,預設值是由會話組態中設定的選項所建立。
會話選項值優先於喜好設定變數和會話組態中 $PSSessionOption
設定之會話的預設值。 不過,它們不會優先於會話設定中設定的最大值、配額或限制。
如需工作階段選項的描述,包括預設值,請參閱 New-PSSessionOption
。
如需喜好設定變數的相關信息 $PSSessionOption
,請參閱 about_Preference_Variables。 如需工作階段設定的詳細資訊,請參閱 about_Session_Configurations。
類型: | PSSessionOption |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-State
指定工作階段狀態。 此 Cmdlet 只會取得處於指定狀態的工作階段。 這個參數可接受的值為:All
、、Opened
Disconnected
、Closed
、 和 Broken
。 預設值是 All
。
會話狀態值相對於目前的會話。 未在目前會話中建立且未連線到目前會話的會話,即使它們連線到不同的會話也一樣 Disconnected
。
會話的狀態會儲存在 會話的 State 屬性中。
此參數是在 Windows PowerShell 3.0 中引進的。
類型: | SessionFilterState |
接受的值: | All, Opened, Disconnected, Closed, Broken |
Position: | Named |
預設值: | All |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-ThrottleLimit
指定可以建立以執行 Get-PSSession
命令的並行連線數目上限。 如果您省略此參數或輸入 值 0
(零),則會使用 預設值 32
。 節流限制僅適用於目前的命令,不適用於會話或計算機。
此參數是在 Windows PowerShell 3.0 中引進的。
類型: | Int32 |
Position: | Named |
預設值: | 32 |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-UseSSL
表示此 Cmdlet 會使用安全套接字層 (SSL) 通訊協定來建立命令執行所在的 Get-PSSession
連線。 預設不會使用 SSL。 如果您使用此參數,但在用於命令的埠上無法使用 SSL,則命令會失敗。
此參數會設定建立的暫存連接,以使用 ComputerName 參數執行Get-PSSession
命令。
此參數是在 Windows PowerShell 3.0 中引進的。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-VMId
指定虛擬機識別碼的陣列。 此 Cmdlet 會啟動每個指定虛擬機的互動式會話。 若要查看您可用的虛擬機,請使用下列命令:
Get-VM | Select-Object -Property Name, ID
類型: | Guid[] |
別名: | VMGuid |
Position: | Named |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-VMName
指定虛擬機名稱的陣列。 此 Cmdlet 會啟動每個指定虛擬機的互動式會話。 若要查看您可用的虛擬機,請使用 Get-VM
Cmdlet。
類型: | String[] |
Position: | Named |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
輸入
None
您無法使用管線將物件傳送至此 Cmdlet。
輸出
備註
Windows PowerShell 包含下列的 Get-PSSession
別名:
gsn
此 Cmdlet 會取得使用者管理的會話 PSSession 物件“,例如使用
New-PSSession
、Enter-PSSession
和Invoke-Command
Cmdlet 所建立的會話。 它不會取得啟動 PowerShell 時所建立的系統管理工作階段。從 Windows PowerShell 3.0 開始, PSSession 物件會儲存在位於伺服器端或接收連接端的電腦上。 若要取得儲存在本機計算機或遠端電腦上的會話,PowerShell 會建立指定計算機的暫存會話,並在會話中執行查詢命令。
若要取得連線到遠端電腦的會話,請使用 ComputerName 或 ConnectionUri 參數來指定遠端電腦。 若要篩選取得的
Get-PSSession
會話,請使用 Name、 ID、 InstanceID 和 State 參數。 使用其餘參數來設定使用的暫存會話Get-PSSession
。當您使用 ComputerName 或 ConnectionUri 參數時,
Get-PSSession
只會從執行 Windows PowerShell 3.0 和更新版本的 PowerShell 的電腦取得會話。PSSession 的 State 屬性值相對於目前的會話。 因此,Disconnected 的值表示 PSSession 未連線到目前的會話。 不過,這並不表示 PSSession 與所有會話中斷連線。 它可能會連線到不同的會話。 若要判斷您是否可以從目前的會話連線或重新連線到 PSSession ,請使用 Availability 屬性。
[無] 的可用性值表示您可以連線到會話。 Busy 值表示您無法連線到 PSSession,因為它已連線到另一個會話。
如需會話之 State 屬性值的詳細資訊,請參閱 RunspaceState 列舉。
如需會話之 Availability 屬性值的詳細資訊,請參閱 RunspaceAvailability 列舉。