Enter-PSSession

使用遠端電腦啟動互動式會話。

Syntax

Enter-PSSession
     [-ComputerName] <String>
     [-EnableNetworkAccess]
     [-Credential <PSCredential>]
     [-ConfigurationName <String>]
     [-Port <Int32>]
     [-UseSSL]
     [-ApplicationName <String>]
     [-SessionOption <PSSessionOption>]
     [-Authentication <AuthenticationMechanism>]
     [-CertificateThumbprint <String>]
     [<CommonParameters>]
Enter-PSSession
     [[-Session] <PSSession>]
     [<CommonParameters>]
Enter-PSSession
     [[-ConnectionUri] <Uri>]
     [-EnableNetworkAccess]
     [-Credential <PSCredential>]
     [-ConfigurationName <String>]
     [-AllowRedirection]
     [-SessionOption <PSSessionOption>]
     [-Authentication <AuthenticationMechanism>]
     [-CertificateThumbprint <String>]
     [<CommonParameters>]
Enter-PSSession
     [-InstanceId <Guid>]
     [<CommonParameters>]
Enter-PSSession
     [[-Id] <Int32>]
     [<CommonParameters>]
Enter-PSSession
     [-Name <String>]
     [<CommonParameters>]
Enter-PSSession
     [-VMId] <Guid>
     -Credential <PSCredential>
     [-ConfigurationName <String>]
     [<CommonParameters>]
Enter-PSSession
     [-VMName] <String>
     -Credential <PSCredential>
     [-ConfigurationName <String>]
     [<CommonParameters>]
Enter-PSSession
     [-ContainerId] <String>
     [-ConfigurationName <String>]
     [-RunAsAdministrator]
     [<CommonParameters>]

Description

Cmdlet Enter-PSSession 會啟動具有單一遠端電腦的互動式會話。 在工作階段期間,您輸入的命令會在遠端電腦上執行,就如同您直接在遠端電腦上輸入一樣。 您一次只能有一個互動式會話。

一般而言,您可以使用 ComputerName 參數來指定遠端電腦的名稱。 不過,您也可以使用互動式會話的 New-PSSession Cmdlet 建立的會話。 不過,您無法使用 Disconnect-PSSessionConnect-PSSessionReceive-PSSession Cmdlet 中斷連線,或重新連線到互動式作業階段。

若要結束互動式工作階段並從遠端電腦中斷連線,請使用 Exit-PSSession Cmdlet,或輸入 exit

範例

範例 1:啟動互動式會話

PS C:\> Enter-PSSession
[localhost]: PS C:\>

此命令會在本機電腦上啟動互動式會話。 命令提示字元會變更,表示您現在在不同的會話中執行命令。

您在新會話中輸入的命令會執行,結果會以文字的形式傳回預設會話。

範例 2:使用互動式會話

第一個命令會 Enter-PSSession 使用 Cmdlet 來啟動遠端電腦 Server01 的互動式作業階段。 工作階段啟動時,命令提示字元會變更為包含計算機名稱。

第二個命令會取得 PowerShell 程式,並將輸出重新導向至 Process.txt 檔案。 命令會提交至遠端電腦,並將檔案儲存在遠端電腦上。

第三個命令會使用 Exit 關鍵詞結束互動式工作階段並關閉連線。 第四個命令會確認Process.txt檔案位於遠端電腦上。 Get-ChildItem 本機電腦上的 (“dir”) 命令找不到檔案。

PS C:\> Enter-PSSession -ComputerName Server01
[Server01]: PS C:\>
[Server01]: PS C:\> Get-Process PowerShell > C:\ps-test\Process.txt
[Server01]: PS C:\> exit
PS C:\>
PS C:\> dir C:\ps-test\Process.txt
Get-ChildItem : Cannot find path 'C:\ps-test\Process.txt' because it does not exist.
At line:1 char:4
+ dir <<<<  c:\ps-test\Process.txt

此命令示範如何使用遠端電腦在互動式會話中工作。

範例 3:使用 Session 參數

PS> $s = New-PSSession -ComputerName Server01
PS> Enter-PSSession -Session $s
[Server01]: PS>

這些命令會使用 的 Enter-PSSession Session 參數,在現有的 PowerShell 工作階段中執行互動式會話 (PSSession)。

範例 4:啟動互動式會話,並指定埠和認證參數

PS> Enter-PSSession -ComputerName Server01 -Port 90 -Credential Domain01\User01
[Server01]: PS>

此命令會啟動與 Server01 計算機的互動式作業階段。 它會使用 Port 參數來指定埠和 Credential 參數,以指定有權連線到遠端電腦之使用者的帳戶。

範例 5:停止互動式會話

PS> Enter-PSSession -ComputerName Server01
[Server01]: PS> Exit-PSSession
PS>

此範例示範如何啟動和停止互動式會話。 第一個命令會 Enter-PSSession 使用 Cmdlet 來啟動與 Server01 計算機的互動式會話。

第二個命令會 Exit-PSSession 使用 Cmdlet 結束會話。 您也可以使用 Exit 關鍵詞結束互動式作業階段。 Exit-PSSessionExit 具有相同的效果。

參數

-AllowRedirection

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

當您使用 連線 ionURI 參數時,遠端目的地可以傳回指示以重新導向至不同的 URI。 根據預設,PowerShell 不會重新導向連線,但您可以使用此參數來允許它重新導向連線。

您也可以變更 Maximum 連線 ionRedirectionCount 會話選項值,以限制重新導向連線的次數。 使用 Cmdlet 的 New-PSSessionOption MaximumRedirection 參數,或設定喜好設定變數的 $PSSessionOption Maximum 連線 ionRedirectionCount 屬性。 預設值是 5。

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

-ApplicationName

指定連線 URI 的應用程式名稱區段。 當您不使用 命令中的 連線 ionURI 參數時,請使用此參數來指定應用程式名稱。

預設值是本機電腦上的喜好設定變數值 $PSSessionApplicationName 。 如果未定義此喜好設定變數,預設值為 WSMAN。 此值適用於大部分使用。 如需詳細資訊,請參閱 about_Preference_Variables

WinRM 服務會使用應用程式名稱來選取接聽程式以服務連線要求。 此參數的值應該符合 遠端電腦上接聽程式的 URLPrefix 屬性值。

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

-Authentication

指定用來驗證使用者認證的機制。 此參數可接受的值為:

  • 預設
  • 基本
  • Credssp
  • Digest
  • Kerberos
  • 交涉
  • NegotiateWithImplicitCredential

預設值為 Default。

CredSSP 驗證僅適用於 Windows Vista、Windows Server 2008 和更新版本的 Windows 操作系統。

如需此參數值的詳細資訊,請參閱 AuthenticationMechanism 列舉

警告

認證安全性支援提供者 (CredSSP) 驗證,其中使用者的認證會傳遞至要驗證的遠端電腦,其設計訴求是在多個資源上要求驗證的命令,例如存取遠端網路共用。 此機制會增加遠端作業的安全性風險。 如果遠端電腦遭到入侵,傳遞給它的認證可用來控制網路會話。

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

-CertificateThumbprint

指定具有執行此動作許可權之用戶帳戶的數位公鑰憑證 (X509)。 輸入憑證的憑證指紋。

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

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

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

-ComputerName

指定計算機名稱。 此 Cmdlet 會啟動具有指定遠端電腦的互動式工作階段。 只輸入一個計算機名稱。 預設是本機電腦。

輸入 NetBIOS 名稱、IP 位址或電腦的完整功能變數名稱。 您也可以使用管線將電腦名稱傳送至 Enter-PSSession

若要在 ComputerName 參數的值中使用 IP 位址,命令必須包含 Credential 參數。 此外,計算機必須針對 HTTPS 傳輸進行設定,或遠端電腦的 IP 位址必須包含在本機電腦上的 WinRM TrustedHosts 清單中。 如需將計算機名稱新增至 TrustedHosts 清單的指示,請參閱 about_Remote_Troubleshooting 中的

注意

在 Windows 作業系統上,若要在 ComputerName 參數的值中包含本機電腦,您必須使用 [以系統管理員身分執行] 選項啟動 PowerShell。

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

-ConfigurationName

指定用於互動式工作階段的工作階段組態。

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

會話的會話組態位於遠端電腦上。 如果遠端電腦上沒有指定的工作階段組態,命令會失敗。

預設值是本機電腦上的喜好設定變數值 $PSSessionConfigurationName 。 如果未設定此喜好設定變數,預設值為 Microsoft.PowerShell。 如需詳細資訊,請參閱 about_Preference_Variables

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

-ConnectionUri

指定 URI,定義工作階段的連接端點。 URI 必須完整。 此字串格式如下所示:

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

預設值如下:

http://localhost:5985/WSMAN

如果您未指定 連線 ionURI,您可以使用 UseSSL、ComputerName、PortApplicationName 參數來指定 連線 ionURI 值。

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

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

Type:Uri
Aliases:URI, CU
Position:1
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-ContainerId

指定容器的識別碼。

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

-Credential

指定具有執行此動作許可權的用戶帳戶。 預設為目前使用者。

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

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

注意

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

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

-EnableNetworkAccess

指出此 Cmdlet 會將互動式安全性令牌新增至回送會話。 互動式令牌可讓您在從其他電腦取得數據的回送會話中執行命令。 例如,您可以在會話中執行命令,將 XML 檔案從遠端電腦複製到本機電腦。

回送會話是一種 PSSession,源自同一部計算機並結束。 若要建立回送工作階段,請省略 ComputerName 參數,或將其值設定為 。 (dot)、localhost 或本機計算機的名稱。

根據預設,會使用網路令牌來建立回送會話,而網路令牌可能無法提供足夠的許可權來向遠端計算機進行驗證。

EnableNetworkAccess 參數只在回送會話中有效。 如果您在遠端電腦上建立會話時使用 EnableNetworkAccess ,命令會成功,但會忽略 參數。

您也可以使用 Authentication 參數的 CredSSP 值,在回送會話中允許遠端訪問,此參數會將會話認證委派給其他電腦。

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

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

-Id

指定現有工作階段的識別碼。 Enter-PSSession 會針對互動式會話使用指定的會話。

若要尋找會話的標識碼,請使用 Get-PSSession Cmdlet。

Type:Int32
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-InstanceId

指定現有工作階段的實例識別碼。 Enter-PSSession 會針對互動式會話使用指定的會話。

實例標識碼是 GUID。 若要尋找會話的實例標識碼,請使用 Get-PSSession Cmdlet。 您也可以使用 工作階段名稱識別子 參數來指定現有的工作階段。 或者,您可以使用 ComputerName 參數來啟動暫存會話。

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

-Name

指定現有工作階段的易記名稱。 Enter-PSSession 會針對互動式會話使用指定的會話。

如果您指定的名稱符合一個以上的會話,命令就會失敗。 您也可以使用 SessionInstanceIDID 參數來指定現有的作業階段。 或者,您可以使用 ComputerName 參數來啟動暫存會話。

若要建立會話的易記名稱,請使用 Cmdlet 的 New-PSSession Name 參數。

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

-Port

指定遠端電腦上用於此命令的網路埠。 若要連線到遠端電腦,遠端計算機必須接聽連線所使用的埠。 默認埠為 5985,這是 HTTP 的 WinRM 連接埠,而 5986 是 HTTPS 的 WinRM 連接埠。

使用替代埠之前,您必須在遠端電腦上設定 WinRM 接聽程式,以在該埠接聽。 使用下列命令來設定接聽程式:

  1. winrm delete winrm/config/listener?Address=*+Transport=HTTP
  2. winrm create winrm/config/listener?Address=*+Transport=HTTP @{Port="\<port-number\>"}

除非您必須,否則請勿使用 Port 參數。 命令中的埠設定會套用至命令執行所在的所有計算機或會話。 替代埠設定可能會防止命令在所有計算機上執行。

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

-RunAsAdministrator

指出 PSSession 是以系統管理員身分執行。

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

-Session

指定要用於互動式會話的 Windows PowerShell 工作階段 (PSSession)。 此參數會採用會話物件。 您也可以使用 Name、InstanceID 或 ID 參數來指定 PSSession

輸入包含會話物件的變數,或建立或取得會話物件的命令,例如 New-PSSessionGet-PSSession 命令。 您也可以使用管線將會話物件傳送至 Enter-PSSession。 您可以使用此參數只提交一個 PSSession 。 如果您輸入包含多個 PSSession 的變數,命令會失敗。

當您使用 Exit-PSSessionEXIT 關鍵詞時,互動式會話會結束,但 您所建立的 PSSession 會保持開啟且可供使用。

Type:PSSession
Position:0
Default value:None
Required:False
Accept pipeline input:True
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

-UseSSL

指出此 Cmdlet 會使用安全套接字層 (SSL) 通訊協定來建立與遠端電腦的連線。 預設不會使用 SSL。

WS-Management 會加密透過網路傳輸的所有 Windows PowerShell 內容。 UseSSL 參數是額外的保護,可跨 HTTPS 連線傳送數據,而不是 HTTP 連線。

如果您使用此參數,但在用於命令的埠上無法使用 SSL,則命令會失敗。

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

-VMId

指定虛擬機的識別碼。

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

-VMName

指定虛擬機的名稱。

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

輸入

String

您可以使用管線將電腦名稱當做字串傳送至此 Cmdlet。

PSSession

您可以使用管線將會話物件傳送至此 Cmdlet。

輸出

None

此 Cmdlet 不會傳回任何輸出。

備註

Windows PowerShell 包含下列的 Enter-PSSession別名:

  • etsn

若要連線到遠端電腦,您必須是遠端電腦上 管理員 istrators 群組的成員。 若要在本機計算機上啟動互動式會話,您必須使用 [ 以系統管理員 身分執行] 選項啟動 PowerShell。

當您使用 Enter-PSSession時,遠端電腦上的使用者配置檔會用於互動式會話。 遠端使用者設定檔中的命令,包括新增 PowerShell 模組和變更命令提示字元的命令,在顯示遠端提示字元之前執行。

Enter-PSSession 會針對互動式會話使用本機電腦上的UI文化特性設定。 若要尋找本機 UI 文化特性,請使用 $UICulture 自動變數。

Enter-PSSessionGet-Command需要、 Out-DefaultExit-PSSession Cmdlet。 如果遠端電腦上的會話設定中未包含這些 Cmdlet,命令會 Enter-PSSession 失敗。

不同於 Invoke-Command,它會先剖析並解譯命令,再將命令傳送至遠端計算機, Enter-PSSession 而不需解譯即可直接將命令傳送至遠端電腦。

如果您想要輸入的會話正忙於處理命令,則 PowerShell 回應 Enter-PSSession 命令之前可能會有延遲。 一旦會話可供使用,您就會連線。 若要取消Enter-PSSession命令,請按 CTRL+C。