共用方式為


New-PSSession

建立本機或遠端電腦的持續性連線。

語法

New-PSSession
   [[-ComputerName] <String[]>]
   [-Credential <PSCredential>]
   [-Name <String[]>]
   [-EnableNetworkAccess]
   [-ConfigurationName <String>]
   [-Port <Int32>]
   [-UseSSL]
   [-ApplicationName <String>]
   [-ThrottleLimit <Int32>]
   [-SessionOption <PSSessionOption>]
   [-Authentication <AuthenticationMechanism>]
   [-CertificateThumbprint <String>]
   [<CommonParameters>]
New-PSSession
   [-Credential <PSCredential>]
   [-Name <String[]>]
   [-EnableNetworkAccess]
   [-ConfigurationName <String>]
   [-ThrottleLimit <Int32>]
   [-ConnectionUri] <Uri[]>
   [-AllowRedirection]
   [-SessionOption <PSSessionOption>]
   [-Authentication <AuthenticationMechanism>]
   [-CertificateThumbprint <String>]
   [<CommonParameters>]
New-PSSession
   -Credential <PSCredential>
   [-Name <String[]>]
   [-ConfigurationName <String>]
   [-VMId] <Guid[]>
   [-ThrottleLimit <Int32>]
   [<CommonParameters>]
New-PSSession
   -Credential <PSCredential>
   [-Name <String[]>]
   [-ConfigurationName <String>]
   -VMName <String[]>
   [-ThrottleLimit <Int32>]
   [<CommonParameters>]
New-PSSession
   [[-Session] <PSSession[]>]
   [-Name <String[]>]
   [-EnableNetworkAccess]
   [-ThrottleLimit <Int32>]
   [<CommonParameters>]
New-PSSession
   [-Name <String[]>]
   [-ConfigurationName <String>]
   -ContainerId <String[]>
   [-RunAsAdministrator]
   [-ThrottleLimit <Int32>]
   [<CommonParameters>]
New-PSSession
   [-Name <String[]>]
   [-UseWindowsPowerShell]
   [<CommonParameters>]
New-PSSession
   [-Name <String[]>]
   [-Port <Int32>]
   [-HostName] <String[]>
   [-UserName <String>]
   [-KeyFilePath <String>]
   [-Subsystem <String>]
   [-ConnectingTimeout <Int32>]
   [-SSHTransport]
   [-Options <Hashtable>]
   [<CommonParameters>]
New-PSSession
   [-Name <String[]>]
   -SSHConnection <Hashtable[]>
   [<CommonParameters>]

Description

Cmdlet New-PSSession 會在本機或遠端電腦上建立 PowerShell 會話 (PSSession)。 當您建立 PSSession 時,PowerShell 會建立與遠端電腦的持續性連線。

使用 PSSession 來執行多個共享數據的命令,例如函式或變數的值。 若要在 PSSession執行命令,請使用 Invoke-Command Cmdlet。 若要使用 PSSession 直接與遠端電腦互動,請使用 Enter-PSSession Cmdlet。 如需詳細資訊,請參閱 about_PSSessions

您可以在遠端電腦上執行命令,而不需使用 或的 ComputerName 參數Enter-PSSession建立 PSSession。Invoke-Command 當您使用 ComputerName 參數時,PowerShell 會建立用於命令的暫存連線,然後關閉。

從 PowerShell 6.0 開始,您可以使用安全殼層 (SSH) 來建立連線,並在遠端電腦上建立會話,如果本機電腦上有 SSH 可用,且遠端電腦已設定 PowerShell SSH 端點。 SSH 型 PowerShell 遠端工作階段的優點是它可以跨多個平台運作(Windows、Linux、macOS)。 針對 SSH 型工作階段,您可以使用 HostNameSSHConnection 參數設定來指定遠端電腦和相關連線資訊。 如需如何設定PowerShell SSH 遠端的詳細資訊,請參閱 透過SSH進行PowerShell遠端處理。

注意

從 Linux 或 macOS 用戶端使用 WSMan 遠端處理時,具有不信任伺服器證書的 HTTPS 端點(例如自我簽署憑證)。 您必須提供 PSSessionOption,其中包含設定為 $true 以成功建立連線的 SkipCACheck 和 SkipCNCheck 值。 只有在您位於可以確定伺服器證書和目標系統網路連線的環境中,才執行此動作。

範例

範例 1:在本機計算機上建立會話

$s = New-PSSession

此命令會在本機計算機上建立新的 PSSession,並將 PSSession 儲存在變數中$s

您現在可以使用此 PSSession 在本機電腦上執行命令。

範例 2:在遠端電腦上建立工作階段

$Server01 = New-PSSession -ComputerName Server01

此命令會在 Server01 計算機上建立新的 PSSession ,並將它儲存在變數中 $Server01

建立多個 PSSession 物件時,請將它們指派給具有實用名稱的變數。 這可協助您在後續命令中管理 PSSession 物件。

範例 3:在多部計算機上建立會話

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

此命令會建立三個 PSSession 物件,其中一個位於 ComputerName 參數所指定的每部電腦上。

命令會使用指派運算子 (=) 將新的 PSSession 物件指派給變數:$s1、、 $s2$s3。 它會將 Server01 PSSession 指派給 $s1、Server02 PSSession 指派給 $s2,並將 Server03 PSSession 指派給 $s3

當您將多個物件指派給一系列變數時,PowerShell 會將每個物件分別指派給數列中的變數。 如果物件數目超過變數,則所有剩餘的物件都會指派給最後一個變數。 如果變數超過對象,其餘變數會是空的 ($null)。

範例 4:使用指定的埠建立會話

New-PSSession -ComputerName Server01 -Port 8081 -UseSSL -ConfigurationName E12

此命令會在 Server01 計算機上建立新的 PSSession ,以連線到伺服器埠 8081 並使用 SSL 通訊協定。 新的 PSSession 會使用稱為 E12的替代會話組態。

設定埠之前,您必須在遠端電腦上設定 WinRM 接聽程式,以接聽埠 8081。 如需詳細資訊,請參閱 Port 參數的描述

範例 5:根據現有的會話建立會話

New-PSSession -Session $s -Credential Domain01\User01

此命令會建立 PSSession ,其屬性與現有的 PSSession 相同。 當現有 PSSession 的資源用盡,而且需要新的 PSSession 來卸除部分需求時,您可以使用此命令格式。

命令會使用的 New-PSSession Session 參數來指定儲存在變數中的 $s PSSession。 它會使用使用者的認證 Domain1\Admin01 來完成命令。

範例 6:在不同的網域中建立具有全域範圍的會話

$global:s = New-PSSession -ComputerName Server1.Domain44.Corpnet.Fabrikam.com -Credential Domain01\Admin01

此範例示範如何在不同網域的計算機上建立 具有全域範圍的 PSSession

根據預設, 在命令行建立的 PSSession 物件會以本機範圍建立,而 腳本中建立的 PSSession 物件具有腳本範圍。

若要建立具有全域範圍的 PSSession,請建立新的 PSSession,然後將 PSSession 儲存在轉換成全域範圍的變數中。 在此情況下, $s 變數會轉換成全域範圍。

此命令會 使用 ComputerName 參數來指定遠端電腦。 由於計算機位於與用戶帳戶不同的網域中,因此計算機的完整名稱會與使用者的認證一起指定。

範例 7:為許多電腦建立會話

$rs = Get-Content C:\Test\Servers.txt | New-PSSession -ThrottleLimit 50

此命令會在檔案中列出的Servers.txt每 200 部電腦上建立 PSSession,並將產生的 PSSession 儲存在 變數中$rsPSSession 物件具有 的節流限制50

當電腦的名稱儲存在資料庫、電子錶格、文字檔或其他可轉換文字格式時,您可以使用此命令格式。

範例 8:使用 URI 建立會話

$s = New-PSSession -URI http://Server01:91/NewSession -Credential Domain01\User01

此命令會在 Server01 計算機上建立 PSSession ,並將它儲存在變數中 $s 。 它會使用 URI 參數來指定傳輸通訊協定、遠端電腦、埠和替代會話組態。 它也會使用 Credential 參數來指定有權在遠端電腦上建立會話的用戶帳戶。

範例 9:在一組會話中執行背景工作

$s = New-PSSession -ComputerName (Get-Content Servers.txt) -Credential Domain01\Admin01 -ThrottleLimit 16
Invoke-Command -Session $s -ScriptBlock {Get-Process PowerShell} -AsJob

這些命令會建立一組 PSSession 對象,然後在每個 PSSession 物件中執行背景工作。

第一個命令會在檔案中列出的Servers.txt每部計算機上建立新的 PSSession。 它會使用 New-PSSession Cmdlet 來建立 PSSession。 ComputerName 參數的值是使用 Get-Content Cmdlet 來取得檔案電腦名稱Servers.txt清單的命令。

此命令會 使用 Credential 參數來建立 具有網域系統管理員許可權的 PSSession 物件,並使用 ThrottleLimit 參數將命令限制為 16 並行連線。 命令會將 PSSession 物件儲存在 變數中 $s

第二個命令會使用 Cmdlet 的 Invoke-Command AsJob 參數來啟動背景工作,在中的每個 PSSession 物件$s中執行Get-Process PowerShell命令。

如需PowerShell背景工作的詳細資訊,請參閱 about_Jobsabout_Remote_Jobs

範例 10:使用計算機的 URI 建立計算機的會話

New-PSSession -ConnectionURI https://management.exchangelabs.com/Management

此命令會 建立 PSSession 物件,此物件會連接到 URI 所指定的電腦,而不是計算機名稱。

範例 11:建立會話選項

$so = New-PSSessionOption -SkipCACheck
New-PSSession -ConnectionUri https://management.exchangelabs.com/Management -SessionOption $so -Credential Server01\Admin01

此範例示範如何建立會話選項物件,並使用 SessionOption 參數。

第一個命令會 New-PSSessionOption 使用 Cmdlet 來建立會話選項。 它會將產生的 SessionOption 物件儲存在 變數中 $so

第二個命令會使用新會話中的 選項。 命令會 New-PSSession 使用 Cmdlet 來建立新的工作階段。 SessionOption 參數的值變數中的 $so SessionOption 物件。

範例 12:使用 SSH 建立會話

New-PSSession -HostName UserA@LinuxServer01

此範例示範如何使用安全殼層 (SSH) 建立新的 PSSession 。 如果遠端電腦上設定 SSH 以提示輸入密碼,您會收到密碼提示。 否則,您必須使用 SSH 金鑰型使用者驗證。

範例 13:使用 SSH 建立工作階段,並指定埠和使用者驗證密鑰

New-PSSession -HostName UserA@LinuxServer01:22 -KeyFilePath c:\<path>\userAKey_rsa

此範例示範如何使用安全殼層 (SSH) 建立 PSSession 。 它會使用 Port 參數來指定要使用的埠,以及 KeyFilePath 參數,以指定用來識別及驗證遠端電腦上的使用者 RSA 金鑰。

範例 14:使用 SSH 建立多個工作階段

$sshConnections = @(
    @{
          HostName    = 'WinServer1'
          UserName    = 'domain\userA'
          KeyFilePath = 'c:\users\UserA\id_rsa'
    }
    @{
        HostName    = 'UserB@LinuxServer5'
        KeyFilePath = 'c:\UserB\<path>\id_rsa'
    }
)
New-PSSession -SSHConnection $sshConnections

此範例示範如何使用安全殼層 (SSH) 和 SSHConnection 參數集來建立多個會話。 SSHConnection 參數會採用哈希表數位列,其中包含每個會話的連線資訊。 請注意,此範例會要求目標遠端計算機已設定 SSH 以支援金鑰型使用者驗證。

範例 15:使用 SSH 選項建立新的工作階段

$options = @{
    Port=22
    User = 'UserB'
    Host = 'LinuxServer5'
}
New-PSSession -KeyFilePath '/Users/UserB/id_rsa' -Options $options

此範例示範如何使用 SSH 選項,建立以 SSH 為基礎的遠端電腦以 SSH 為基礎的新會話。 Options 參數會採用值哈希表,這些值會當做選項傳遞至基礎ssh命令,且已建立與遠端系統的連線。

參數

-AllowRedirection

指出此 Cmdlet 允許將此連線重新導向至替代的統一資源識別碼 (URI)。

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

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

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

-ApplicationName

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

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

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

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

-Authentication

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

  • Default
  • Basic
  • Credssp
  • Digest
  • Kerberos
  • Negotiate
  • NegotiateWithImplicitCredential

預設值是 Default

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

警告

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

類型:AuthenticationMechanism
接受的值:Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-CertificateThumbprint

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

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

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

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

-ComputerName

指定計算機名稱的陣列。 此 Cmdlet 會建立與指定計算機的持續性連線(PSSession)。 如果您輸入多個計算機名稱, New-PSSession 請建立多個 PSSession 物件,每部計算機各一個。 預設是本機電腦。

輸入 NetBIOS 名稱、IP 位址或一或多部遠端電腦的完整功能變數名稱。 若要指定本機計算機,請輸入計算機名稱 、 localhost或點 (.)。 當計算機位於與使用者不同的網域時,需要完整功能變數名稱。 您也可以使用引號將電腦名稱管線傳送至 New-PSSession

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

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

類型:String[]
別名:Cn
Position:0
預設值:None
必要:False
接受管線輸入:True
接受萬用字元:False

-ConfigurationName

指定用於新 PSSession 的會話組態

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

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

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

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

-ConnectingTimeout

指定允許初始 SSH 連線完成的毫秒時間量。 如果連線未在指定時間內完成,則會傳回錯誤。

此參數已在 PowerShell 7.2 中引進

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

-ConnectionUri

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

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

預設值如下:

http://localhost:5985/WSMAN

如果您未指定 ConnectionURI,您可以使用 UseSSLComputerName、PortApplicationName 參數來指定 ConnectionURI 值。

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

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

類型:Uri[]
別名:URI, CU
Position:0
預設值:None
必要:True
接受管線輸入:True
接受萬用字元:False

-ContainerId

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

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

-Credential

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

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

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

注意

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

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

-EnableNetworkAccess

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

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

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

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

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

若要保護計算機免於惡意存取,具有互動式令牌的已中斷聯機回送會話,也就是使用 EnableNetworkAccess 參數所建立的會話,只能從建立會話的計算機重新連線。 使用 CredSSP 驗證的已中斷聯機會話可以從其他電腦重新連線。 如需詳細資訊,請參閱Disconnect-PSSession

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

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

-HostName

指定安全殼層 (SSH) 型連線的電腦名稱陣列。 這類似於 ComputerName 參數,不同之處在於遠端電腦的連線是使用 SSH 而不是 Windows WinRM 進行。

此參數是在 PowerShell 6.0 中引進的。

類型:String[]
Position:0
預設值:None
必要:True
接受管線輸入:False
接受萬用字元:False

-KeyFilePath

指定安全殼層 (SSH) 用來驗證遠端電腦上的使用者金鑰檔案路徑。

SSH 可透過私人/公鑰執行使用者驗證,作為基本密碼驗證的替代方案。 如果遠端電腦已設定金鑰驗證,則可以使用此參數來提供識別使用者的密鑰。

此參數是在 PowerShell 6.0 中引進的。

類型:String
別名:IdentityFilePath
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Name

指定 PSSession易記名稱。

當您使用其他 Cmdlet,例如 Get-PSSessionEnter-PSSession時,可以使用名稱來參考 PSSession。 名稱不一定是計算機或目前會話的唯一名稱。

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

-Options

指定連線到遠端 SSH 型工作階段時所使用的 SSH 選項哈希表。 可能的選項是 Unix 型 ssh 命令版本所支援的任何值。

參數明確傳遞的任何值優先於Options哈希表中傳遞的值。 例如,使用 Port 參數會覆寫在 Options 哈希表中傳遞的任何Port機碼/值組。

類型:Hashtable
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元: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 參數。 命令中的埠設定會套用至命令執行所在的所有計算機或會話。 替代埠設定可能會防止命令在所有計算機上執行。

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

-RunAsAdministrator

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

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

-Session

指定此 Cmdlet 作為新 PSSession 模型的 PSSession 物件陣列。 此參數會建立與指定之 PSSession 物件具有相同屬性的新 PSSession 物件。

輸入包含 PSSession 物件的變數,或建立或取得 PSSession 物件的命令,例如 New-PSSessionGet-PSSession 命令。

產生的 PSSession 物件與原始程式具有相同的計算機名稱、應用程式名稱、連線 URI、埠、組態名稱、節流限制,以及安全套接字層 (SSL) 值,但它們有不同的顯示名稱、標識符和實例標識元 (GUID)。

類型:PSSession[]
Position:0
預設值:None
必要:False
接受管線輸入:True
接受萬用字元:False

-SessionOption

指定工作階段的進階選項。 輸入 SessionOption 物件,例如您使用 New-PSSessionOption Cmdlet 建立的物件,或索引鍵是會話選項名稱的哈希表,而值是會話選項值。

如果設定選項,選項的 $PSSessionOption 預設值取決於喜好設定變數的值。 否則,預設值是由會話組態中設定的選項所建立。

會話選項值優先於喜好設定變數和會話組態中 $PSSessionOption 設定之會話的預設值。 不過,它們不會優先於會話設定中設定的最大值、配額或限制。

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

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

-SSHConnection

此參數會採用哈希表數位,其中每個哈希錶都包含建立安全殼層 (SSH) 連線所需的一或多個連線參數(HostName、Port、UserNameKeyFilePath)。

哈希表聯機參數與針對 SSHHost 參數集所定義的相同。

SSHConnection 參數適用於建立多個會話,其中每個會話都需要不同的連線資訊。

此參數是在 PowerShell 6.0 中引進的。

類型:Hashtable[]
Position:Named
預設值:None
必要:True
接受管線輸入:False
接受萬用字元:False

-SSHTransport

指出遠端連線是使用安全殼層 (SSH) 建立的。

根據預設,PowerShell 會使用 Windows WinRM 連線到遠端電腦。 此參數會強制 PowerShell 使用 HostName 參數集來建立 SSH 型遠端連線。

此參數是在 PowerShell 6.0 中引進的。

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

-Subsystem

指定用於新 PSSession 的 SSH 子系統。

這會指定要在 目標上使用的子系統,如 中所 sshd_config定義。 子系統會使用預先定義的參數啟動特定版本的 PowerShell。 如果遠端電腦上沒有指定的子系統,命令會失敗。

如果未使用此參數,則預設值為 powershell 子系統。

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

-ThrottleLimit

指定可以建立以執行此命令的並行連線數目上限。 如果您省略此參數或輸入 值 0 (零),則會使用 預設值 32

節流限制僅適用於目前的命令,不適用於會話或計算機。

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

-UserName

指定用來在遠端電腦上建立工作階段之帳戶的用戶名稱。 使用者驗證方法取決於遠端電腦上的安全殼層 (SSH) 設定方式。

如果 SSH 設定為基本密碼驗證,系統會提示您輸入用戶密碼。

如果 SSH 設定為金鑰型使用者驗證,則可以透過 KeyFilePath 參數提供金鑰檔案路徑,而且系統不會提示您輸入密碼。 請注意,如果用戶端使用者密鑰檔案位於 SSH 已知位置 ,則密鑰型驗證不需要 KeyFilePath 參數,而且使用者驗證會自動根據使用者名稱進行。 如需詳細資訊,請參閱有關密鑰型使用者驗證的 SSH 檔。

這不是必要的參數。 如果未指定 UserName 參數,則目前的登入使用者名稱會用於連線。

此參數是在 PowerShell 6.0 中引進的。

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

-UseSSL

表示此 Cmdlet 會使用 SSL 通訊協定來建立遠端電腦的連線。 預設不會使用 SSL。

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

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

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

-UseWindowsPowerShell

在本機系統上建立新 Windows PowerShell Runspace 的遠端連線。

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

-VMId

指定虛擬機識別碼的陣列。 此 Cmdlet 會啟動 PowerShell Direct 互動式會話,其中包含每個指定的虛擬機。 如需詳細資訊,請參閱 使用PowerShell的虛擬機自動化和管理。

用來 Get-VM 查看 Hyper-V 主機上可用的虛擬機。

類型:Guid[]
別名:VMGuid
Position:0
預設值:None
必要:True
接受管線輸入:True
接受萬用字元:False

-VMName

指定虛擬機名稱的陣列。 此 Cmdlet 會啟動 PowerShell Direct 互動式會話,其中包含每個指定的虛擬機。 如需詳細資訊,請參閱 使用PowerShell的虛擬機自動化和管理。

用來 Get-VM 查看 Hyper-V 主機上可用的虛擬機。

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

輸入

String

您可以使用管線將字串傳送至此 Cmdlet。

System.URI

您可以使用管線將 URI 傳送至此 Cmdlet。

PSSession

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

輸出

PSSession

備註

PowerShell 包含下列的 New-PSSession別名:

  • 所有平臺:

    • nsn
  • 此 Cmdlet 使用 PowerShell 遠端基礎結構。 若要使用此 Cmdlet,必須將本機電腦和任何遠端電腦設定為 PowerShell 遠端處理。 如需詳細資訊,請參閱 about_Remote_Requirements

  • 若要在本機計算機上建立 PSSession ,請使用 [ 以系統管理員 身分執行] 選項啟動 PowerShell。

  • 當您完成 PSSession 時,請使用 Remove-PSSession Cmdlet 刪除 PSSession 並釋放其資源。

  • 從 PowerShell 6.0 開始,包含 HostNameSSHConnection 參數集。 它們已新增為根據安全殼層 (SSH) 提供 PowerShell 遠端功能。 在多個平臺上都支援 SSH 和 PowerShell(Windows、Linux、macOS)和 PowerShell 遠端處理,這些平臺會安裝並設定 PowerShell 和 SSH。 這與先前以 WinRM 為基礎的僅限 Windows 遠端處理不同,而且許多 WinRM 特定功能和限制不適用。 例如,不支援以 WinRM 為基礎的配額、工作階段選項、自定義端點設定和中斷連線/重新連線功能。 如需如何設定PowerShell SSH 遠端的詳細資訊,請參閱 透過SSH進行PowerShell遠端處理。

可執行檔案 ssh 會依下列順序從下列來源取得組態資料:

  1. 命令行選項
  2. 使用者的組態檔 (~/.ssh/config)
  3. 全系統組態檔 (/etc/ssh/ssh_config)

下列 Cmdlet 參數會對應至 ssh 參數和選項:

Cmdlet 參數 ssh 參數 對等 ssh -o 選項
-KeyFilePath -i <KeyFilePath> -o IdentityFile=<KeyFilePath>
-UserName -l <UserName> -o User=<UserName>
-Port -p <Port> -o Port=<Port>
-ComputerName -Subsystem -s <ComputerName> <Subsystem> -o Host=<ComputerName>

參數明確傳遞的任何值優先於Options哈希表中傳遞的值。 如需檔案的詳細資訊 ssh_config ,請參閱 ssh_config(5)