New-PSSession
建立與本機或遠端電腦之間的固定連線。
語法
New-PSSession [[-ComputerName] <string[]>] [-ApplicationName <string>] [-Authentication {<Default> | <Basic> | <Negotiate> | <NegotiateWithImplicitCredential> | <Credssp> | <Digest> | <Kerberos>}] [-CertificateThumbprint <string>] [-ConfigurationName <string>] [-Credential <PSCredential>] [-Name <string[]>] [-Port <int>] [-SessionOption <PSSessionOption>] [-UseSSL] [-ThrottleLimit <int>] [<CommonParameters>]
New-PSSession [[-Session] <PSSession[]>] [-Name <string[]>] [-ThrottleLimit <int>] [<CommonParameters>]
New-PSSession [-ConnectionURI] <Uri[]> [-AllowRedirection] [-Authentication {<Default> | <Basic> | <Negotiate> | <NegotiateWithImplicitCredential> | <Credssp> | <Digest> | <Kerberos>}] [-CertificateThumbprint <string>] [-ConfigurationName <string>] [-Credential <PSCredential>] [-Name <string[]>] [-SessionOption <PSSessionOption>] [-ThrottleLimit <int>] [<CommonParameters>]
描述
New-PSSession Cmdlet 會在本機或遠端電腦上建立 Windows PowerShell 工作階段 (PSSession)。建立 PSSession 時,Windows PowerShell 會建立與遠端電腦之間的固定連線。
請使用 PSSession 來執行共用資料的多個命令,例如函數或變數的值。若要在 PSSession 中執行命令,請使用 Invoke-Command Cmdlet。若要使用 PSSession 直接與遠端電腦互動,請使用 Enter-PSSession Cmdlet。如需詳細資訊,請參閱 about_PSSessions。
您可以在遠端電腦執行命令,而不需要使用 Enter-PSSession 或 Invoke-Command 的 ComputerName 參數建立 PSSession。使用 ComputerName 參數時,Windows PowerShell 會建立暫時連線,這個連線適用於互動式工作階段或單一命令,而且在工作階段或命令完成之後便會關閉。
參數
-AllowRedirection
允許將這個連線重新導向至替代統一資源識別項 (URI)。
在使用 ConnectionURI 參數時,遠端目的地可能會傳回指示,以重新導向至不同的 URI。根據預設,Windows PowerShell 不會重新導向連線,但是您可以使用 AllowRedirection 參數允許它重新導向連線。
您也可以設定 $PSSessionOption 喜好設定變數的 MaximumConnectionRedirectionCount 屬性或 SessionOption 參數的 MaximumConnectionRedirectionCount 屬性值,藉此限制連線的重新導向次數。
預設值為 5。如需詳細資訊,請參閱 SessionOption 參數的描述以及 New-PSSessionOption。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-ApplicationName <string>
指定連線 URI 的應用程式名稱區段。當您沒有在命令中使用 ConnectionURI 參數時,可以使用此參數指定應用程式名稱。
預設值為本機電腦上的 $PSSessionApplicationName 喜好設定變數的值。如果沒有定義此喜好設定變數,則預設值為 "WSMAN"。這個值適合大部分使用情況。如需詳細資訊,請參閱 about_Preference_Variables。
WinRM 服務會使用應用程式名稱來選取要服務連線要求的接聽程式。這個參數的值必須符合遠端電腦上接聽程式的 URLPrefix 屬性值。
必要? |
false |
位置? |
named |
預設值 |
WSMAN |
接受管線輸入? |
true (ByPropertyName) |
接受萬用字元? |
false |
-Authentication <AuthenticationMechanism>
指定用來驗證使用者認證的機制。有效值為 "Default"、"Basic"、"Credssp"、"Digest"、"Kerberos"、"Negotiate" 和 "NegotiateWithImplicitCredential"。預設值為 "Default"。
CredSSP 驗證僅適用於 Windows Vista、Windows Server 2008 和更新版的 Windows。
如需這個參數值的詳細資訊,請參閱 MSDN (Microsoft Developer Network) Library 中的 System.Management.Automation.Runspaces.AuthenticationMechanism 列舉說明,網址為:https://go.microsoft.com/fwlink/?LinkID=144382 (英文)。
警告:認證安全性服務提供者 (CredSSP) 驗證 (其中使用者的認證會傳送到遠端電腦) 是專為需要對一個以上的資源進行驗證的命令所設計,例如存取遠端網路共用。此機制會提高遠端操作的安全性風險。如果遠端電腦已經遭受危害,則傳遞給遠端電腦的認證可能會被用來控制網路工作階段。
必要? |
false |
位置? |
named |
預設值 |
Default |
接受管線輸入? |
false |
接受萬用字元? |
false |
-CertificateThumbprint <string>
對於具有執行此動作之權限的使用者帳戶,指定其數位公開金鑰憑證 (X509)。請輸入憑證的憑證指紋。
憑證係在進行用戶端憑證式驗證時使用。這些憑證只能對應到本機使用者帳戶,並不適用於網域帳戶。
若要取得憑證指紋,請在 Windows PowerShell 的 Cert: 磁碟機中使用 Get-Item 或 Get-ChildItem 命令。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-ComputerName <string[]>
建立與指定之電腦間的固定連線 (PSSession)。如果輸入多個電腦名稱,New-PSSession 會建立多個 PSSession,一部電腦一個。預設為本機電腦。
請輸入一部或多部遠端電腦的 NetBIOS 名稱、IP 位址或完整網域名稱。若要指定本機電腦,請輸入電腦名稱、"localhost" 或點 (.)。當電腦所在的網域與使用者不同時,必須輸入完整網域名稱。您也可以經由管道將電腦名稱 (用引號括住) 輸出至 New-PSSession。
若要在 ComputerName 參數的值中使用 IP 位址,命令必須包含 Credential 參數。而且,該電腦必須設定成 HTTPS 傳輸,或者遠端電腦的 IP 位址必須包含在本機電腦的 WinRM TrustedHosts 清單中。如需將電腦名稱新增到 TrustedHosts 清單的指示,請參閱 about_Remote_Troubleshooting 中的<如何將電腦新增到信任的主機清單>。
注意:在 Windows Vista 和更新版的 Windows 中,若要在 ComputerName 參數值中包含本機電腦,您必須以 [以系統管理員身分執行] 選項啟動 Windows PowerShell。
必要? |
false |
位置? |
1 |
預設值 |
|
接受管線輸入? |
true (ByValue, ByPropertyName) |
接受萬用字元? |
false |
-ConfigurationName <string>
指定用於新 PSSession 的工作階段設定。
請輸入工作階段設定的設定名稱或完整資源統一資源識別項 (URI)。如果只指定設定名稱,則會在其前面加上下列結構描述 URI:https://schemas.microsoft.com/powershell。
工作階段的工作階段設定是位於遠端電腦。如果遠端電腦上沒有指定的工作階段設定,則命令會失敗。
預設值為本機電腦上的 $PSSessionConfigurationName 喜好設定變數的值。如果沒有設定此喜好設定變數,則預設值為 Microsoft.PowerShell。如需詳細資訊,請參閱 about_Preference_Variables。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
true (ByPropertyName) |
接受萬用字元? |
false |
-ConnectionURI <Uri[]>
指定定義連線端點的統一資源識別項 (URI)。此 URI 必須是完整的 URI。
這個字串的格式如下所示:
<傳輸方式>://<電腦名稱>:<連接埠>/<應用程式名稱>
預設值如下所示:
http://localhost:80/WSMAN
URI 中傳輸方式區段的有效值為 HTTP 和 HTTPS。如果未指定 ConnectionURI,就必須使用 UseSSL、ComputerName、Port 和 ApplicationName 參數指定 URI 值。
如果目的電腦將連線重新導向到不同的 URI,那麼除非您在命令中使用 AllowRedirection 參數,否則 Windows PowerShell 不會重新導向連線。
必要? |
true |
位置? |
1 |
預設值 |
|
接受管線輸入? |
true (ByPropertyName) |
接受萬用字元? |
false |
-Credential <PSCredential>
指定具有執行此動作之權限的使用者帳戶。預設為目前使用者。
請輸入使用者名稱,例如 "User01"、"Domain01\User01" 或 "User@Domain.com",或是輸入 PSCredential 物件,例如 Get-Credential Cmdlet 傳回的物件。
當您輸入使用者名稱時,會提示您輸入密碼。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
true (ByPropertyName) |
接受萬用字元? |
false |
-Name <string[]>
指定好記的 PSSession 名稱。
您可以在使用其他 Cmdlet (例如 Get-PSSession 和 Enter-PSSession) 時,使用此名稱來表示 PSSession。此名稱不一定要是電腦或目前工作階段的唯一名稱。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-Port <int>
指定遠端電腦上要供此命令使用的網路連接埠。預設為連接埠 80 (HTTP 連接埠)。
使用其他連接埠之前,必須先於遠端電腦上設定 WinRM 接聽程式,以接聽該連接埠。請使用下列命令設定接聽程式:
1. winrm delete winrm/config/listener?Address=*+Transport=HTTP
2. winrm create winrm/config/listener?Address=*+Transport=HTTP @{Port="<連接埠號碼>"}
除非必要,否則請勿使用 Port 參數。命令中的連接埠設定適用於執行命令的所有電腦和工作階段。其他連接埠設定可能會導致無法在所有電腦上執行命令。
必要? |
false |
位置? |
named |
預設值 |
80 |
接受管線輸入? |
false |
接受萬用字元? |
false |
-Session <PSSession[]>
使用指定的 PSSession 做為新 PSSession 的模型。此參數會使用與指定之 PSSession 相同的屬性來建立新的 PSSession。
請輸入包含 PSSession 的變數,或者輸入建立或取得 PSSession 的命令,例如 New-PSSession 或 Get-PSSession 命令。
產生的 PSSession 會與原始 PSSession 具有相同的電腦名稱、應用程式名稱、連線 URI、連接埠、設定名稱、節流閥限制和安全通訊端層 (SSL) 值,但是顯示名稱、識別碼和執行個體識別碼 (GUID) 則不同。
必要? |
false |
位置? |
1 |
預設值 |
|
接受管線輸入? |
true (ByValue, ByPropertyName) |
接受萬用字元? |
false |
-SessionOption <PSSessionOption>
設定工作階段的進階選項。請輸入使用 New-PSSessionOption Cmdlet 所建立的 SessionOption 物件。
如果有設定 $PSSessionOption 喜好設定變數的值,它會決定選項的預設值。否則,工作階段會使用系統預設值。
如需工作階段選項 (包括預設值) 的描述,請參閱 New-PSSessionOption。如需 $PSSessionOption 喜好設定變數的詳細資訊,請參閱 about_Preference_Variables。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-ThrottleLimit <int>
指定可以建立以執行此命令之同時連線數目的上限。如果您省略這個參數或輸入 0 (零) 這個值,則會使用預設值 32。
節流閥限制只適用於目前的命令,並不適用於工作階段或電腦。
必要? |
false |
位置? |
named |
預設值 |
32 |
接受管線輸入? |
false |
接受萬用字元? |
false |
-UseSSL
使用安全通訊端層 (SSL) 通訊協定建立與遠端電腦的連線。預設不會使用 SSL,
因為 WS-Management 會將所有透過網路傳輸的 Windows PowerShell 內容加密。使用 UseSSL 時,便會透過 HTTPS 連線 (而非 HTTP 連線) 傳送資料,提供多一層防護。
如果使用此參數,但是供命令使用的連接埠無法使用 SSL,則命令會失敗。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
<CommonParameters>
這個 Cmdlet 支援一般參數:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。如需詳細資訊,請參閱 about_Commonparameters.
輸入和輸出
輸入型別是可經由管道輸出至 Cmdlet 的物件型別。傳回型別則是 Cmdlet 所傳回的物件型別。
輸入 |
System.String、System.URI 或 System.Management.Automation.Runspaces.PSSession 您可經由管道將 ComputerName (字串)、ConnectionURI (URI) 或 Session (PSSession) 物件輸出至 New-PSSession。 |
輸出 |
System.Management.Automation.Runspaces.PSSession |
附註
此 Cmdlet 會使用 Windows PowerShell 遠端基礎結構。若要使用此 Cmdlet,本機電腦和任何遠端電腦都必須經過設定,以使用 Windows PowerShell 遠端功能。如需詳細資訊,請參閱 about_Remote_Requirements。
在 Windows Vista 和更新版的 Windows 中,若要在本機電腦上建立 PSSession,您必須以 [以系統管理員身分執行] 選項啟動 Windows PowerShell。
當您使用完 PSSession 後,請使用 Remove-PSSession Cmdlet 刪除 PSSession 並釋放其資源。
範例 1
C:\PS>$s = new-pssession
描述
-----------
這個命令會在本機電腦建立新的 PSSession,並將 PSSession 儲存在 $s 變數中。
您現在可以使用這個 PSSession 在本機電腦執行命令。
範例 2
C:\PS>$Server01 = new-pssession -ComputerName Server01
描述
-----------
這個命令會在 Server01 電腦建立新的 PSSession,並將其儲存在 $Server01 變數中。
建立多個 PSSession 時,請使用適當的名稱將它們指定給變數。這可協助您在後續的命令中管理 PSSession。
範例 3
C:\PS>$s1, $s2, $s3 = new-session -computername server1,server2,server3
描述
-----------
這個命令會建立三個新的 PSSession,ComputerName 參數指定的每一部電腦各一個。
這個命令會使用指定運算子 (=),將新的 PSSession 指定給下列變數的陣列:$s1, $s2, $s3。它會將 Server01 PSSession 指定給 $s1、將 Server02 PSSession 指定給 $s2,並將 Server03 PSSession 指定給 $s3。
將多個物件指定給變數的陣列時,Windows PowerShell 會將每個物件分別指定給陣列中的變數。如果物件比變數還要多,所有剩餘的物件都會指定給最後一個變數。如果變數比物件還要多,剩餘的變數就會空白 (null)。
範例 4
C:\PS>new-pssession -computername Server01 -port 8081 -useSSL -ConfigurationName E12
描述
-----------
這個命令會在 Server01 電腦上建立新的 PSSession,以便連線至伺服器連接埠 8081 及使用 SSL 通訊協定。這個新的 PSSession 會使用名為 "E12" 的其他工作階段設定。
設定連接埠之前,您必須先在遠端電腦上設定要接聽連接埠 8081 的 WinRM 接聽程式。如需詳細資訊,請參閱 Port 參數的描述。
範例 5
C:\PS>new-pssession -session $s -credential domain01\user01
描述
-----------
這個命令會使用與現有 PSSession 相同的屬性來建立新的 PSSession。當現有 PSSession 的資源已用盡,需要新的 PSSession 來分擔部分需求時,您就可以使用這個命令格式。
這個命令會使用 New-PSSession 的 Session 參數指定儲存在 $s 變數中的 PSSession。它會使用 Domain1\Admin01 使用者的認證來完成命令。
範例 6
C:\PS>$global:s = new-pssession -computername server1.domain44.corpnet.fabrikam.com -credential domain01\admin01
描述
-----------
在這個範例中,會示範如何在不同網域的電腦上,建立具有全域範圍的 PSSession。
根據預設,在命令列建立的 PSSession 都具有本機範圍,而在指令碼中建立的 PSSession 則具有指令碼範圍。
若要建立具有全域範圍的 PSSession,請建立新的 PSSession,然後將 PSSession 儲存在轉換為全域範圍的變數中。在本例中,$ 變數已轉換為全域範圍。
此命令會使用 ComputerName 參數來指定遠端電腦。由於電腦所在的網域與使用者帳戶不同,故同時指定了電腦的完整名稱與使用者的認證。
範例 7
C:\PS>$rs = get-content c:\test\servers.txt | new-PSsession -throttleLimit 50
描述
-----------
這個命令會在 Servers.txt 檔案中列出的每一部電腦 (共 200 部) 上建立 PSSession,並將產生的 PSSession 儲存到 $rs 變數。PSSession 的節流閥限制為 50。
當電腦的名稱儲存成資料庫、試算表、文字檔或其他文字可轉換格式時,您就可以使用這個命令格式。
範例 8
C:\PS>$s = new-PSSession -URI http://Server01:91/NewSession -credential domain01\user01
描述
-----------
這個命令會在 Server01 電腦建立 PSSession,並將其儲存到 $s 變數。它會使用 URI 參數指定傳輸通訊協定、遠端電腦、連接埠和其他工作階段設定。它也會使用 Credential 參數,指定具有在遠端電腦建立工作階段之權限的使用者帳戶。
範例 9
C:\PS>$s = new-PSSession -computername (import-csv servers.csv) -credential domain01\admin01 -throttlelimit 16
C:\PS> invoke-command -session $s -scriptblock {get-process powershell} -AsJob
描述
-----------
這些命令會建立一組 PSSession,接著在每個 PSSession 中執行背景工作。
第一個命令會在 Servers.csv 檔案列出的每台電腦建立新的 PSSession。它會使用 New-PSSession Cmdlet 建立 PSSession。ComputerName 參數的值是一個命令,這個命令會使用 Import-Csv Cmdlet 匯入 Servers.csv 檔案並讀取其內容。
這個命令會使用 Credential 參數,利用網域系統管理員的權限來建立 PSSession,並使用 ThrottleLimit 將命令限制為 16 個同時連線。此命令會將 PSSession 儲存在 $s 變數中。
第二個命令會使用 Invoke-Command 的 AsJob 參數啟動背景工作,此工作會對 $s 中的每個 PSSession 執行 "Get-Process PowerShell" 命令。
如需背景工作的詳細資訊,請參閱 about_Jobs 和 about_Remote_Jobs。
範例 10
C:\PS>new-PSSession -ConnectionURI https://management.exchangelabs.com/Management
描述
-----------
這個命令會建立新的 PSSession,以便連線到由 URI (而非電腦名稱) 所指定的電腦。
範例 11
C:\PS>$so = New-WSManSessionOption -SkipCACheck
PS C:\> new-pssession -ConnectionUri https://management.exchangelabs.com/Management -SessionOption $so -credential server01\admin01
描述
-----------
在這個範例中,會示範如何建立及使用 SessionOption 參數。
第一個命令會使用 New-WSManSessionOption Cmdlet 建立工作階段選項,並會將產生的 SessionOption 物件儲存在 $so 參數中。
第二個命令會在新的工作階段中使用該選項。這個命令會使用 New-PSSession Cmdlet 建立新的工作階段。SessionOption 參數的值是 $so 變數中的 SessionOption 物件。
請參閱
概念
about_PSSessions
about_Remote
Get-PSSession
Remove-PSSession
Enter-PSSession
Exit-PSSession
Invoke-Command