共用方式為


Get-PSSession

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

Syntax

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]
   [-Name <String[]>]
   [-Credential <PSCredential>]
   [-Authentication <AuthenticationMechanism>]
   [-CertificateThumbprint <String>]
   [-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
   [-InstanceId <Guid[]>]
   [<CommonParameters>]
Get-PSSession
   [-Id] <Int32[]>
   [<CommonParameters>]

Description

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

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

若不使用參數,Get-PSSession 會取得在目前工作階段中建立的所有工作階段。

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

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

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

如需 PowerShell 會話的詳細資訊,請參閱 about_PSSessions

範例

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

Get-PSSession

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

範例 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 上的所有工作階段,即使它們是在不同的工作階段中或不同的電腦上所建立。

輸出顯示有兩個工作階段的狀態為 Disconnected,且可用性為 Busy。 它們是在不同的工作階段中所建立,並且目前都正在使用中。 ScheduledJobs 會話是 Opened 和 Available,是在目前的會話中建立的。

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

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

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

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

第二個命令會使用 Get-PSSession Cmdlet 來取得三個 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,以顯示每個 PSSessionComputerNameInstanceID 屬性。

第二個命令會使用 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 命令成功。 工作階段的狀態為 Opened 並且可供使用。

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

Get-PSSession -Id 2

此命令會取得標識碼為 2 的 PSSession 。 因為 ID屬性的值 只在目前的工作階段中是唯一的, 所以Id 參數只適用於本機命令。

參數

-AllowRedirection

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

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

此參數是在 Windows PowerShell 3.0 引進。

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ApplicationName

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

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

此參數的值可用來選取與篩選工作階段。 它不會變更工作階段使用的應用程式。

Type:String
Position:Named
Default value:All sessions
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Authentication

指定用來為 Get-PSSession 命令執行所在的工作階段驗證認證的機制。

這個參數會設定為了執行 Get-PSSession 命令搭配 ComputerNameConnectionUri 參數而建立的暫時連線。

此參數可接受的值為:

  • Default
  • 基本資訊
  • Credssp
  • Digest
  • Kerberos
  • 交涉
  • NegotiateWithImplicitCredential。

預設值為 Default。

如需此參數值的詳細資訊,請參閱 MSDN 連結庫中的 AuthenticationMechanism 列舉

注意:使用者認證會傳遞至要驗證之遠端電腦的「認證安全性支援提供者 (CredSSP)」驗證,是設計用於需要在一個以上資源進行驗證的命令,例如存取遠端網路共用。 此機制會使得遠端作業的安全性風險變高。 若遠端電腦遭到入侵,傳遞給它的認證便可用來控制網路工作階段。

此參數是在 Windows PowerShell 3.0 引進。

Type:AuthenticationMechanism
Accepted values:Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
Position:Named
Default value:Default
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CertificateThumbprint

指定使用者帳戶的數位公開金鑰憑證 (X509),此使用者帳戶具有建立 Get-PSSession 命令執行所在之工作階段的權限。 請輸入憑證的憑證指紋。

這個參數會設定為了執行 Get-PSSession 命令搭配 ComputerNameConnectionUri 參數而建立的暫時連線。

憑證將用於用戶端憑證式驗證。 這些憑證只能對應至本機使用者帳戶,無法用於網域帳戶。

若要取得憑證指紋,請在PowerShell憑證:磁碟驅動器中使用 Get-Item 或 Get-ChildItem 命令。

此參數是在 Windows PowerShell 3.0 引進。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ComputerName

指定電腦名稱的陣列。 取得連線到指定之電腦的工作階段。 不允許使用萬用字元。 沒有任何預設值。

從 Windows PowerShell 3.0 開始,PSSession 物件會儲存在每個連線的遠端端電腦上。 若要取得指定計算機上的會話,PowerShell 會建立每部計算機的暫時連線,並執行 Get-PSSession 命令。

輸入一或多部電腦的 NetBIOS 名稱、IP 位址或完整網域名稱。 若要指定本機電腦,請輸入電腦名稱、localhost 或句點 (.)。

注意:此參數只會從執行 Windows PowerShell 3.0 或更新版本的 PowerShell 的電腦取得會話。 舊版不會儲存工作階段。

Type:String[]
Aliases:Cn
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-ConfigurationName

指定組態的名稱。 此 Cmdlet 只會取得使用指定之工作階段組態的工作階段。

輸入工作階段設定的設定名稱或完整資源 URI。 如果您只指定組態名稱,則前面會加上下列架構 URI: https://schemas.microsoft.com/powershell。 工作階段的設定名稱儲存在工作階段的 ConfigurationName 屬性中。

此參數的值可用來選取與篩選工作階段。 它不會變更工作階段使用的工作階段設定。

如需會話設定的詳細資訊,請參閱 about_Session_Configurations

Type:String
Position:Named
Default value:All sessions
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-ConnectionUri

指定 URI,定義 Get-PSSession 命令執行所在暫存工作階段的連接端點。 此 URI 必須是完整的 URI。

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

此字串的格式為:

<Transport>://<ComputerName>:<Port>/<ApplicationName>

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

如果您未指定 ConnectionUri,您可以使用 UseSSLComputerNamePortApplicationName 參數來指定 ConnectionURI 值。 URI 的 Transport 區段有效值為 HTTP 與 HTTPS。 若指定含傳輸區段的連線 URI,但未指定連接埠,將會以標準連接埠 80 (適用於 HTTP) 和 443 (適用於 HTTPS) 建立工作階段。 若要使用PowerShell遠端處理的預設埠,請指定 HTTP 的埠 5985 或 HTTPS 的埠 5986。

如果目的地計算機將連線重新導向至不同的 URI,除非您在 命令中使用 AllowRedirection 參數,否則 PowerShell 會防止重新導向。

此參數是在 Windows PowerShell 3.0 引進。

此參數只會從執行 Windows PowerShell 3.0 或更新版本的計算機取得會話 Windows PowerShell。 舊版不會儲存工作階段。

Type:Uri[]
Aliases:URI, CU
Position:0
Default value:Http://localhost:5985/WSMAN
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Credential

指定用戶認證。 此 Cmdlet 會以指定使用者的許可權執行 命令。 指定具有連線到遠端電腦並執行 Get-PSSession 命令之權限的使用者帳戶。 預設為目前使用者。 輸入使用者名稱,例如 User01Domain01\User01User@Domain.com或 ,或輸入 PSCredential 物件,例如由 Get-Credential Cmdlet 傳回的用戶名稱。 當您輸入使用者名稱時,此 Cmdlet 會提示您輸入密碼。

這個參數會設定為了執行 Get-PSSession 命令搭配 ComputerNameConnectionUri 參數而建立的暫時連線。

此參數是在 Windows PowerShell 3.0 引進。

Type:PSCredential
Position:Named
Default value:Current user
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Id

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

標識碼是整數,可唯一識別目前會話中的使用者管理會話。 記住和輸入比 InstanceId 更容易,但只在目前的會話中是唯一的。 工作階段的識別碼儲存在工作階段的 ID 屬性中。

Type:Int32[]
Position:0
Default value:All sessions
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-InstanceId

指定工作階段實例識別碼的陣列。 此 Cmdlet 只會取得具有指定實例標識碼的會話。

執行個體識別碼是 GUID,可唯一識別本機或遠端電腦上的某個階段作業。 InstanceID 是唯一的,即使您在 PowerShell 中執行多個會話也是如此。

工作階段的執行個體識別碼儲存在工作階段的 InstanceID 屬性中。

Type:Guid[]
Position:Named
Default value:All sessions
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

指定工作階段名稱的陣列。 此 Cmdlet 只會取得具有指定易記名稱的工作階段。 允許使用萬用字元。

工作階段的好記名稱儲存在工作階段的 Name 屬性中。

Type:String[]
Position:Named
Default value:All sessions
Required:False
Accept pipeline input:True
Accept wildcard characters: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\>

這個參數會設定為了執行 Get-PSSession 命令搭配 ComputerNameConnectionUri 參數而建立的暫時連線。

除非必要,否則請勿使用 Port 參數。 命令中設定的 會套用至命令執行所在的所有計算機或會話。 替代的連接埠設定可能使得命令無法在全部電腦上執行。

此參數是在 Windows PowerShell 3.0 引進。

Type:Int32
Position:Named
Default value:5985, 5986
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SessionOption

指定工作階段的進階選項。 輸入 SessionOption 物件 (例如您使用 New-PSSessionOption Cmdlet 建立的物件) 或者雜湊表,其中索引鍵為工作階段選項名稱,而值為工作階段選項值。

選項的預設值是由 $PSSessionOption 喜好設定變數的值所決定 (若設定了該變數)。 否則,將以工作階段設定中設定的選項建立預設值。

工作階段選項值優先順序高於 $PSSessionOption 喜好設定變數與工作階段設定中設定的工作階段預設值。 不過,它們的優先順序不會高於工作階段設定中設定的最大值、配額或限制。

如需工作階段選項的描述,包括預設值,請參閱 New-PSSessionOption。 如需喜好設定變數的相關信息 $PSSessionOption ,請參閱 about_Preference_Variables。 如需會話設定的詳細資訊,請參閱 about_Session_Configurations

Type:PSSessionOption
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-State

指定工作階段狀態。 此 Cmdlet 只會取得處於指定狀態的工作階段。 此參數可接受的值為:All、Opened、Disconnected、Closed 和 Broken。 預設值為 All。

工作階段狀態值是相對於目前的工作階段。 不是在目前的工作階段中建立,也未連線到目前之工作階段的工作階段,即使它們已連線到不同的工作階段,其狀態也會是 Disconnected。

工作階段的狀態儲存在工作階段的 State 屬性中。

此參數是在 Windows PowerShell 3.0 引進。

Type:SessionFilterState
Accepted values:All, Opened, Disconnected, Closed, Broken
Position:Named
Default value:All
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ThrottleLimit

指定為執行 Get-PSSession 命令可建立的同時連線數上限。 若省略此參數,或輸入值為 0 (零),則會使用預設值 32。 節流限制僅適用於目前命令,不適用於工作階段或電腦。

此參數是在 Windows PowerShell 3.0 引進。

Type:Int32
Position:Named
Default value:32
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UseSSL

指出此 Cmdlet 會使用安全套接字層 (SSL) 通訊協定來建立 Get-PSSession 命令執行所在的連線。 預設不會使用 SSL。 若您使用此參數,但是命令所用的連接埠上無法使用 SSL,則命令會失敗。

這個參數會設定為了執行 Get-PSSession 命令搭配 ComputerName 參數而建立的暫時連線。

此參數是在 Windows PowerShell 3.0 引進。

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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 屬性值相對於目前的會話。 因此, [中斷連線 ] 的值表示 PSSession 未連線到目前的會話。 不過,這並不表示 PSSession 與所有會話中斷連線。 它可能連線不同的工作階段。 若要判斷您是否可以從目前的會話連線或重新連線至 PSSession ,請使用 Availability 屬性。

Availability 值為 None 表示您可以連線工作階段。 [忙碌] 的值表示您無法連線到 PSSession,因為它已連線到另一個會話。

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

如需會話 可用性 屬性值的詳細資訊,請參閱 RunspaceAvailability 列舉