共用方式為


Get-PSSession

取得本機和遠端電腦上的PowerShell工作階段。

語法

Get-PSSession
   [-Name <String[]>]
   [<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
   [-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
   [-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>]
   -VMName <String[]>
   [<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>]
   -InstanceId <Guid[]>
   [-State <SessionFilterState>]
   -VMName <String[]>
   [<CommonParameters>]
Get-PSSession
   [-InstanceId <Guid[]>]
   [<CommonParameters>]
Get-PSSession
   [-Id] <Int32[]>
   [<CommonParameters>]

Description

Get-PSSession Cmdlet 會在本機和遠端電腦上取得使用者管理的 PowerShell 會話(PSSessions)。

從 Windows PowerShell 3.0 開始,會話會儲存在每一個連線的遠端電腦上。 您可以使用 ComputerNameConnectionUriGet-PSSession 的參數來取得連線到本機計算機或遠端電腦的會話,即使它們不是在目前的會話中建立。

如果沒有參數,Get-PSSession 會取得目前會話中建立的所有會話。

使用篩選參數,包括 NameIDInstanceIDStateApplicationNameConfigurationName,從 Get-PSSession 傳回的會話中選取。

使用其餘參數來設定當您使用 ComputerNameConnectionUri 參數時,Get-PSSession 命令執行所在的暫存連線。

注意:在 Windows PowerShell 2.0 中,沒有參數,Get-PSSession 取得在目前會話中建立的所有會話。 ComputerName 參數會取得在目前工作階段中建立並連線到指定電腦的工作階段。

如需 PowerShell 工作階段的詳細資訊,請參閱 about_PSSessions

範例

範例 1:取得在目前會話中建立的會話

Get-PSSession

此命令會取得目前會話中建立的所有 PSSessions。 它不會取得在其他會話或其他計算機上建立 PSSessions,即使它們連線到這部計算機也一樣。

範例 2:取得連線到本機計算機的會話

Get-PSSession -ComputerName "localhost"

此命令會取得連線到本機計算機的 PSSessions。 若要指出本機電腦,請輸入電腦名稱、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 計算機的 PSSessions

此命令會傳回 Server02 上的所有會話,即使這些會話是在不同會話或不同電腦上建立的。

輸出顯示其中兩個會話的狀態為已中斷連線和忙碌可用性。 它們是在不同的會話中建立的,目前正在使用中。 已於目前會話中建立已開啟且可用的 ScheduledJobs 會話。

範例 4:儲存此命令的結果

New-PSSession -ComputerName Server01, Server02, Server03
$s1, $s2, $s3 = Get-PSSession

此範例示範如何將 Get-PSSession 命令的結果儲存在多個變數中。

第一個命令會使用 New-PSSession Cmdlet,在三部遠端電腦上建立 PSSessions

第二個命令會使用 Get-PSSession Cmdlet 來取得三個 PSSessions。 然後,它會將每個 PSSessions 儲存在個別變數中。

當 PowerShell 將物件的陣列指派給變數數位時,它會將第一個物件指派給第一個變數、第二個物件指派給第二個變數等等。 如果物件數目超過變數,則會將所有剩餘的物件指派給陣列中的最後一個變數。 如果變數超過物件,則不會使用額外的變數。

範例 5:使用實例標識碼刪除會話

Get-PSSession | Format-Table -Property ComputerName, InstanceID
$s = Get-PSSession -InstanceID a786be29-a6bb-40da-80fb-782c67f7db0f
Remove-PSSession -Session $s

此範例示範如何使用其實例標識碼取得 PSSession,然後刪除 PSSession

第一個命令會取得目前會話中建立的所有 PSSessions。 它會將 PSSessions 傳送至 Format-Table Cmdlet,以顯示每個 PSSession的每個 ComputerNameInstance ID 屬性。

第二個命令會使用 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 分鐘)。 此設定可讓命令有更多時間完成。ConfigurationNameSessionOption 參數可用來設定每個電腦上執行 Get-PSSession Cmdlet 的暫存會話。輸出會顯示命令會傳回BackupJob04工作階段。 會話已中斷連線,且 可用性 為 None,表示它未使用中。

第二個命令會使用 Get-PSSession Cmdlet 來取得BackupJob04工作階段,並使用 Connect-PSSession Cmdlet 連線到工作階段。 命令會將會話儲存在 $s 變數中。

第三個命令會取得$s變數中的會話。 輸出顯示 Connect-PSSession 命令成功。 會話處於 開啟 狀態,可供使用。

範例 7:使用其標識碼取得會話

Get-PSSession -Id 2

此命令會取得標識碼為 2 的 PSSession。 因為 識別碼 屬性的值只在目前的會話中是唯一的,因此 標識子 參數只適用於本機命令。

參數

-AllowRedirection

指出此 Cmdlet 允許將此連線重新導向至替代的統一資源識別碼 (URI)。 根據預設,PowerShell 不會重新導向連線。

此參數會設定建立的暫存連線,以使用 ConnectionUri 參數執行 Get-PSSession 命令。

此參數是在 Windows PowerShell 3.0 中引進的。

類型:SwitchParameter
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

-ApplicationName

指定應用程式的名稱。 此 Cmdlet 只會連線到使用指定應用程式的作業階段。

輸入連線 URI 的應用程式名稱區段。 例如,在下列連線 URI 中,應用程式名稱為 WSMan:https://localhost:5985/WSMAN。 會話的應用程式名稱會儲存在會話的 Runspace.ConnectionInfo.AppName 屬性中。

此參數的值是用來選取和篩選會話。 它不會變更會話所使用的應用程式。

類型:String
Position:Named
預設值:All sessions
必要:False
接受管線輸入:True
接受萬用字元:False

-Authentication

指定機制,用來驗證執行 Get-PSSession 命令之會話的認證。

此參數會設定建立的暫存連線,以使用 ComputerNameConnectionUri 參數來執行 Get-PSSession 命令。

此參數可接受的值為:

  • 違約
  • 基本
  • Credssp
  • 消化
  • Kerberos
  • 談判
  • 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 命令的會話。 輸入憑證的憑證指紋。

此參數會設定建立的暫存連線,以使用 ComputerNameConnectionUri 參數來執行 Get-PSSession 命令。

憑證用於客戶端憑證型驗證。 它們只能對應至本機用戶帳戶;它們不適用於網域帳戶。

若要取得憑證指紋,請使用PowerShell憑證: 磁碟驅動器中的 Get-Item 或 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:https://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>

預設值為:https://localhost:5985/WSMAN

如果您未指定 ConnectionUri,您可以使用 UseSSLComputerNamePortApplicationName 參數來指定 ConnectionURI 值。 URI 傳輸區段的有效值為 HTTP 和 HTTPS。 如果您指定具有傳輸區段的連線 URI,但未指定埠,則會使用標準埠建立會話:80 代表 HTTP,而 HTTPS 則為 443。 若要使用PowerShell遠端的預設埠,請針對 HTTP 指定埠 5985,或針對 HTTPS 指定埠 5986。

如果目的地計算機將連線重新導向至不同的 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 命令。 預設值為目前的使用者。

輸入使用者名稱,例如 User01Domain01\User01,或輸入 Get-Credential Cmdlet 所產生的 PSCredential 物件。 如果您輸入使用者名稱,系統會提示您輸入密碼。

認證會儲存在 PSCredential 物件中,密碼會儲存為 secureString

注意

如需 SecureString 數據保護的詳細資訊,請參閱 SecureString 有多安全?

此參數會設定為暫存連線,以使用 ComputerNameConnectionUri 參數來執行 Get-PSSession 命令。

此參數是在 Windows PowerShell 3.0 中引進的。

類型:PSCredential
Position:Named
預設值:Current user
必要:False
接受管線輸入:False
接受萬用字元:False

-Id

指定工作階段識別碼的陣列。 此 Cmdlet 只會取得具有指定標識符的工作階段。 輸入一或多個標識碼,並以逗號分隔,或使用範圍運算符 (..) 來指定標識符的範圍。 您無法將ID參數與 ComputerName 參數一起使用。

標識碼是整數,可唯一識別目前會話中的使用者管理會話。 記住和輸入比 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\>

此參數會設定為暫存連線,以使用 ComputerNameConnectionUri 參數來執行 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。

會話狀態值相對於目前的會話。 未在目前會話中建立且未連線到目前會話的會話,即使已連線到不同的會話,仍會處於已中斷連線的狀態。

會話的狀態會儲存在會話的 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。

輸出

PSSession

備註

  • 此 Cmdlet 會取得使用者管理的會話,PSSession 物件」,例如使用 New-PSSession、Enter-PSSession和 Invoke-Command Cmdlet 所建立的會話。 它不會取得啟動 PowerShell 時所建立的系統管理工作階段。
  • 從 Windows PowerShell 3.0 開始,PSSession 物件會儲存在位於伺服器端或接收連接端的電腦上。 若要取得儲存在本機計算機或遠端電腦上的會話,PowerShell 會建立指定計算機的暫存會話,並在會話中執行查詢命令。
  • 若要取得連線到遠端電腦的會話,請使用 ComputerNameConnectionUri 參數來指定遠端電腦。 若要篩選 Get-PSSession 取得的會話,請使用 NameIDInstanceIDState 參數。 使用其餘參數來設定 Get-PSSession 使用的暫存會話。
  • 當您使用 ComputerNameConnectionUri 參數時,Get-PSSession 只會從執行 Windows PowerShell 3.0 和更新版本的 PowerShell 的計算機取得會話。
  • PSSessionState 屬性的值相對於目前會話。 因此,Disconnected 的值表示 PSSession 未連線到目前的會話。 不過,這並不表示 PSSession 與所有會話中斷連線。 它可能會連線到不同的會話。 若要判斷您是否可以從目前的會話連線或重新連線至 PSSession,請使用 Availability 屬性。

AvailabilityNone 表示您可以連線到會話。 Busy 的值表示您無法連線到 PSSession,因為它已連線到另一個會話。

如需會話 State 屬性值的詳細資訊,請參閱 runspaceState 列舉

如需會話之 Availability 屬性值的詳細資訊,請參閱 runspaceAvailability 列舉