共用方式為


Get-PSSession

取得本機和遠端電腦上的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
   [-ConfigurationName <String>]
   -InstanceId <Guid[]>
   [-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>]
   [-Name <String[]>]
   [-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-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 上的所有工作階段,即使它們是在不同的工作階段中或不同的電腦上所建立。

輸出顯示其中兩個DisconnectedBusy工作階段具有狀態和可用性。 它們是在不同的工作階段中所建立,並且目前都正在使用中。 會話 ScheduledJobsOpenedAvailable,是在目前的會話中建立的。

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

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

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

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

第二個命令會使用 Cmdlet 來取得三個 Get-PSSessionPSSession。 然後,它會將每個 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 來刪除變數中的 $sPSSession

範例 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 參數可用來設定 Cmdlet 在每個電腦上執行所在的暫存會話 Get-PSSession 。輸出會顯示命令傳 BackupJob04 回會話。 會話已中斷連線, 且可用性None,表示它不在使用中。

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

第三個命令會取得 變數中的 $s 會話。 輸出顯示 Connect-PSSession 命令成功。 工作階段的狀態為 Opened 並且可供使用。

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

Get-PSSession -Id 2

此命令會取得標識碼為的 2PSSession。 因為 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: http://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 認證。

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

此參數可接受的值為:

  • Default
  • Basic
  • CredSSP
  • Digest
  • Kerberos
  • Negotiate
  • NegotiateWithImplicitCredential.

預設值是 Default

如需此參數值的詳細資訊,請參閱 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 會話的許可權。 請輸入憑證的憑證指紋。

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

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

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

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

如果您未指定 ConnectionUri,您可以使用 UseSSLComputerNamePortApplicationName 參數來指定 ConnectionURI 值。 URI 的 Transport 區段有效值為 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 的計算機取得會話。 舊版不會儲存工作階段。

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

-ContainerId

指定容器識別碼的陣列。 此 Cmdlet 會啟動具有每個指定容器的互動式會話。 docker ps使用 命令來取得容器標識碼的清單。 如需詳細資訊,請參閱 docker ps 命令的說明。

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

-Credential

指定用戶認證。 此 Cmdlet 會以指定使用者的許可權來執行 命令。 指定有權連線到遠端電腦的用戶帳戶,並執行 Get-PSSession 命令。 預設為目前使用者。

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

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

注意

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

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

此參數是在 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\>

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

除非必要,否則請勿使用 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、、OpenedDisconnectedClosed、 和 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,則命令會失敗。

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

此參數是在 Windows PowerShell 3.0 引進。

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

-VMId

指定虛擬機識別碼的陣列。 此 Cmdlet 會啟動互動式會話,其中包含每個指定的虛擬機。 若要查看可用的虛擬機,請使用下列命令:

Get-VM | Select-Object -Property Name, ID

Type:Guid[]
Aliases:VMGuid
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-VMName

指定虛擬機器名稱的陣列。 此 Cmdlet 會啟動互動式會話,其中包含每個指定的虛擬機。 若要查看可用的虛擬機,請使用 Get-VM Cmdlet。

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

輸入

None

您無法使用管線將物件傳送至此 Cmdlet。

輸出

PSSession

備註

PowerShell 包含的下列別名 Get-PSSession

  • 所有平台:

    • gsn
  • 此 Cmdlet 會取得使用者管理的會話 PSSession 物件,例如使用 New-PSSessionEnter-PSSessionInvoke-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 列舉