Dela via


New-PSSession

Skapar en beständig anslutning till en lokal eller fjärransluten dator.

Syntax

New-PSSession
   [[-ComputerName] <String[]>]
   [-Credential <PSCredential>]
   [-Name <String[]>]
   [-EnableNetworkAccess]
   [-Port <Int32>]
   [-UseSSL]
   [-ConfigurationName <String>]
   [-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
   [[-Session] <PSSession[]>]
   [-Name <String[]>]
   [-EnableNetworkAccess]
   [-ThrottleLimit <Int32>]
   [<CommonParameters>]

Description

Cmdleten New-PSSession skapar en Windows PowerShell-session (PSSession) på en lokal dator eller fjärrdator. När du skapar en PSSession-upprättar Windows PowerShell en beständig anslutning till fjärrdatorn.

Använd en PSSession- för att köra flera kommandon som delar data, till exempel en funktion eller värdet för en variabel. Om du vill köra kommandon i en PSSession-använder du cmdleten Invoke-Command. Om du vill använda PSSession- för att interagera direkt med en fjärrdator använder du cmdleten Enter-PSSession. Mer information finns i about_PSSessions (https://go.microsoft.com/fwlink/?LinkID=135181).

Du kan köra kommandon på en fjärrdator utan att skapa en PSSession- med hjälp av parametrarna ComputerName för Enter-PSSession eller Invoke-Command. När du använder parametern ComputerName skapar Windows PowerShell en tillfällig anslutning som används för kommandot och stängs sedan.

Exempel

Exempel 1: Skapa en session på den lokala datorn

PS C:\> $s = New-PSSession

Det här kommandot skapar en ny PSSession- på den lokala datorn och sparar PSSession- i variabeln $s.

Nu kan du använda den här PSSession- för att köra kommandon på den lokala datorn.

Exempel 2: Skapa en session på en fjärrdator

PS C:\> $Server01 = New-PSSession -ComputerName Server01

Det här kommandot skapar en ny PSSession- på Server01-datorn och sparar den i variabeln $Server 01.

När du skapar flera PSSession- objekt tilldelar du dem till variabler med användbara namn. På så sätt kan du hantera PSSession- objekt i efterföljande kommandon.

Exempel 3: Skapa sessioner på flera datorer

PS C:\> $s1, $s2, $s3 = New-PSSession -ComputerName Server01,Server02,Server03

Det här kommandot skapar tre PSSession- objekt, ett på var och en av de datorer som anges av parametern ComputerName.

Kommandot använder tilldelningsoperatorn (=) för att tilldela nya PSSession- objekt till variabler: $s 1, $s 2, $s 3. Server01 PSSession tilldelas till $s 1, Server02 PSSession till $s 2 och Server03 PSSession till $s 3.

När du tilldelar flera objekt till en serie variabler tilldelar Windows PowerShell varje objekt till en variabel i serien. Om det finns fler objekt än variabler tilldelas alla återstående objekt till den sista variabeln. Om det finns fler variabler än objekt är de återstående variablerna tomma (null).

Exempel 4: Skapa en session med en angiven port

PS C:\> New-PSSession -ComputerName Server01 -Port 8081 -UseSSL -ConfigurationName E12

Det här kommandot skapar en ny PSSession- på server01-datorn som ansluter till serverporten 8081 och använder SSL-protokollet. Den nya PSSession- använder en alternativ sessionskonfiguration med namnet E12.

Innan du ställer in porten måste du konfigurera WinRM-lyssnaren på fjärrdatorn så att den lyssnar på port 8081. Mer information finns i beskrivningen av parametern Port.

Exempel 5: Skapa en session baserat på en befintlig session

PS C:\> New-PSSession -Session $s -Credential Domain01\User01

Det här kommandot skapar en PSSession- med samma egenskaper som en befintlig PSSession-. Du kan använda det här kommandoformatet när resurserna i en befintlig PSSession är uttömda och en ny PSSession- behövs för att avlasta en del av efterfrågan.

Kommandot använder parametern Session för New-PSSession för att ange PSSession som sparats i variabeln $s. Den använder autentiseringsuppgifterna för Domain1\Admin01-användaren för att slutföra kommandot.

Exempel 6: Skapa en session med ett globalt omfång i en annan domän

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

Det här exemplet visar hur du skapar en PSSession- med ett globalt omfång på en dator i en annan domän.

Som standard skapas PSSession- objekt som skapas på kommandoraden med lokalt omfång och PSSession objekt som skapats i ett skript har skriptomfång.

Skapa en PSSession- med globalt omfång genom att skapa en ny PSSession- och sedan lagra PSSession- i en variabel som är kopplad till ett globalt omfång. I det här fallet omvandlas variabeln $s till ett globalt omfång.

Kommandot använder parametern ComputerName för att ange fjärrdatorn. Eftersom datorn finns i en annan domän än användarkontot anges datorns fullständiga namn tillsammans med användarens autentiseringsuppgifter.

Exempel 7: Skapa sessioner för många datorer

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

Det här kommandot skapar en PSSession- på var och en av de 200 datorer som anges i Servers.txt-filen och lagrar den resulterande PSSession- i variabeln $rs. PSSession objekt har en begränsningsgräns på 50.

Du kan använda det här kommandoformatet när namnen på datorer lagras i en databas, ett kalkylblad, en textfil eller ett annat textkonvertert format.

Exempel 8: Skapa en session med hjälp av en URI

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

Det här kommandot skapar en PSSession- på Server01-datorn och lagrar den i variabeln $s. Den använder parametern URI för att ange transportprotokollet, fjärrdatorn, porten och en alternativ sessionskonfiguration. Den använder också parametern Credential för att ange ett användarkonto som har behörighet att skapa en session på fjärrdatorn.

Exempel 9: Kör ett bakgrundsjobb i en uppsättning sessioner

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

Dessa kommandon skapar en uppsättning PSSession- objekt och kör sedan ett bakgrundsjobb i vart och ett av PSSession- objekt.

Det första kommandot skapar en ny PSSession- på var och en av datorerna som anges i filen Servers.txt. Den använder cmdleten New-PSSession för att skapa PSSession-. Värdet för parametern ComputerName är ett kommando som använder cmdleten Get-Content för att hämta listan över datornamn Servers.txt filen.

Kommandot använder parametern Credential för att skapa PSSession- objekt som har behörighet som domänadministratör och använder parametern ThrottleLimit för att begränsa kommandot till 16 samtidiga anslutningar. Kommandot sparar PSSession- objekt i variabeln $s.

Det andra kommandot använder parametern AsJob i cmdleten Invoke-Command för att starta ett bakgrundsjobb som kör ett Get-Process PowerShell-kommando i vart och ett av PSSession- objekt i $s.

Mer information om Windows PowerShell-bakgrundsjobb finns i about_Jobs och about_Remote_Jobs.

Exempel 10: Skapa en session för en dator med hjälp av dess URI

PS C:\> New-PSSession -ConnectionURI https://management.exchangelabs.com/Management

Det här kommandot skapar en PSSession objekt som ansluter till en dator som anges av en URI i stället för ett datornamn.

Exempel 11: Skapa ett sessionsalternativ

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

Det här exemplet visar hur du skapar ett sessionsalternativobjekt och använder parametern SessionOption.

Det första kommandot använder cmdleten New-PSSessionOption för att skapa ett sessionsalternativ. Det sparar det resulterande SessionOption-objektet i variabeln $so.

Det andra kommandot använder alternativet i en ny session. Kommandot använder cmdleten New-PSSession för att skapa en ny session. Värdet för parametern SessionOption är objektet SessionOption i variabeln $so.

Parametrar

-AllowRedirection

Anger att den här cmdleten tillåter omdirigering av den här anslutningen till en alternativ URI (Uniform Resource Identifier).

När du använder parametern ConnectionURI kan fjärrmålet returnera en instruktion för att omdirigera till en annan URI. Som standard omdirigerar Inte Windows PowerShell anslutningar, men du kan använda den här parametern för att göra det möjligt för den att omdirigera anslutningen.

Du kan också begränsa antalet gånger anslutningen omdirigeras genom att ändra MaximumConnectionRedirectionCount sessionsalternativvärde. Använd parametern MaximumRedirection för cmdleten New-PSSessionOption eller ange egenskapen MaximumConnectionRedirectionCount för $PSSessionOption inställningsvariabeln. Standardvärdet är 5.

Typ:SwitchParameter
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-ApplicationName

Anger programnamnssegmentet för anslutnings-URI:n. Använd den här parametern för att ange programnamnet när du inte använder parametern ConnectionURI i kommandot.

Standardvärdet är värdet för $PSSessionApplicationName inställningsvariabeln på den lokala datorn. Om den här inställningsvariabeln inte har definierats är standardvärdet WSMAN. Det här värdet är lämpligt för de flesta användningsområden. Mer information finns i about_Preference_Variables.

WinRM-tjänsten använder programnamnet för att välja en lyssnare som ska betjäna anslutningsbegäran. Värdet för den här parametern ska matcha värdet för URLPrefix egenskap för en lyssnare på fjärrdatorn.

Typ:String
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:True
Godkänn jokertecken:False

-Authentication

Anger den mekanism som används för att autentisera användarens autentiseringsuppgifter. De godtagbara värdena för den här parametern är:

  • Standard
  • Grundläggande
  • Credssp
  • Smälta
  • Kerberos
  • Förhandla
  • NegotiateWithImplicitCredential

Standardvärdet är Standard.

Mer information om värdena för den här parametern finns i AuthenticationMechanism Enumeration i MSDN-biblioteket.

Varning! CredSSP-autentisering (CredSSP), där användarautentiseringsuppgifterna skickas till en fjärrdator som ska autentiseras, är utformad för kommandon som kräver autentisering på mer än en resurs, till exempel åtkomst till en fjärrnätverksresurs. Den här mekanismen ökar säkerhetsrisken för fjärråtgärden. Om fjärrdatorn komprometteras kan de autentiseringsuppgifter som skickas till den användas för att styra nätverkssessionen.

Typ:AuthenticationMechanism
Godkända värden:Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-CertificateThumbprint

Anger det digitala offentliga nyckelcertifikatet (X509) för ett användarkonto som har behörighet att utföra den här åtgärden. Ange certifikatets tumavtryck.

Certifikat används i klientcertifikatbaserad autentisering. De kan endast mappas till lokala användarkonton. de fungerar inte med domänkonton.

Om du vill hämta ett certifikat använder du kommandot Get-Item eller Get-ChildItem i Windows PowerShell Cert: -enheten.

Typ:String
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-ComputerName

Anger en matris med namn på datorer. Den här cmdleten skapar en beständig anslutning (PSSession) till den angivna datorn. Om du anger flera datornamn skapar New-PSSession flera PSSession- objekt, ett för varje dator. Standardvärdet är den lokala datorn.

Ange NetBIOS-namnet, en IP-adress eller ett fullständigt domännamn för en eller flera fjärrdatorer. Om du vill ange den lokala datorn skriver du datornamnet, localhost eller en punkt (.). När datorn finns i en annan domän än användaren krävs det fullständigt kvalificerade domännamnet. Du kan också skicka ett datornamn, inom citattecken, till New-PSSession.

Om du vill använda en IP-adress i värdet för parametern ComputerName måste kommandot innehålla parametern Credential. Dessutom måste datorn konfigureras för HTTPS-transport, annars måste IP-adressen för fjärrdatorn ingå i WinRM TrustedHosts-listan på den lokala datorn. Anvisningar för hur du lägger till ett datornamn i listan TrustedHosts finns i "Så här lägger du till en dator i listan över betrodda värdar" i about_Remote_Troubleshooting (https://go.microsoft.com/fwlink/?LinkID=135188).

Om du vill inkludera den lokala datorn i värdet för parametern ComputerName startar du Windows PowerShell med alternativet Kör som administratör.

Typ:String[]
Alias:Cn
Position:0
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:True
Godkänn jokertecken:False

-ConfigurationName

Anger sessionskonfigurationen som används för den nya PSSession-.

Ange ett konfigurationsnamn eller den fullständigt kvalificerade resurs-URI:n för en sessionskonfiguration. Om du bara anger konfigurationsnamnet förbereds följande schema-URI: https://schemas.microsoft.com/PowerShell.

Sessionskonfigurationen för en session finns på fjärrdatorn. Om den angivna sessionskonfigurationen inte finns på fjärrdatorn misslyckas kommandot.

Standardvärdet är värdet för $PSSessionConfigurationName inställningsvariabeln på den lokala datorn. Om den här inställningsvariabeln inte har angetts är standardvärdet Microsoft.PowerShell. Mer information finns i about_Preference_Variables.

Typ:String
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:True
Godkänn jokertecken:False

-ConnectionUri

Anger en URI som definierar anslutningsslutpunkten för sessionen. URI:n måste vara fullständigt kvalificerad. Formatet för den här strängen är följande:

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

Standardvärdet är följande:

https://localhost:5985/WSMAN

Om du inte anger någon ConnectionURI-kan du använda parametrarna UseSSL, ComputerName, Portoch ApplicationName för att ange värdena för ConnectionURI.

Giltiga värden för transportsegmentet för URI:n är HTTP och HTTPS. Om du anger en anslutnings-URI med ett transportsegment, men inte anger någon port, skapas sessionen med standardportar: 80 för HTTP och 443 för HTTPS. Om du vill använda standardportarna för Windows PowerShell-fjärrkommunikation anger du port 5985 för HTTP eller 5986 för HTTPS.

Om måldatorn omdirigerar anslutningen till en annan URI förhindrar Windows PowerShell omdirigeringen om du inte använder parametern AllowRedirection i kommandot.

Typ:Uri[]
Alias:URI, CU
Position:0
Standardvärde:None
Obligatorisk:True
Godkänn pipeline-indata:True
Godkänn jokertecken:False

-Credential

Anger ett användarkonto som har behörighet att utföra den här åtgärden. Standardvärdet är den aktuella användaren.

Ange ett användarnamn, till exempel User01, Domain01\User01 eller User@Domain.com, eller ange ett PSCredential- objekt, till exempel ett som returneras av Get-Credential cmdlet.

När du skriver ett användarnamn uppmanas du att ange ett lösenord i den här cmdleten.

Typ:PSCredential
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:True
Godkänn jokertecken:False

-EnableNetworkAccess

Anger att den här cmdleten lägger till en interaktiv säkerhetstoken till loopback-sessioner. Med den interaktiva token kan du köra kommandon i loopback-sessionen som hämtar data från andra datorer. Du kan till exempel köra ett kommando i sessionen som kopierar XML-filer från en fjärrdator till den lokala datorn.

En loopback-session är en PSSession- som kommer från och slutar på samma dator. Om du vill skapa en loopback-session utelämnar du parametern ComputerName eller anger dess värde till punkt (.), localhost eller namnet på den lokala datorn.

Som standard skapar den här cmdleten loopback-sessioner med hjälp av en nätverkstoken, vilket kanske inte ger tillräcklig behörighet för att autentisera till fjärrdatorer.

Parametern EnableNetworkAccess gäller endast i loopback-sessioner. Om du använder EnableNetworkAccess när du skapar en session på en fjärrdator lyckas kommandot, men parametern ignoreras.

Du kan också aktivera fjärråtkomst i en loopback-session med hjälp av CredSSP-värdet för parametern Authentication, som delegerar sessionsautentiseringsuppgifterna till andra datorer.

För att skydda datorn från skadlig åtkomst kan frånkopplade loopback-sessioner som har interaktiva token, som skapas med hjälp av parametern EnableNetworkAccess, endast återanslutas från den dator där sessionen skapades. Frånkopplade sessioner som använder CredSSP-autentisering kan återanslutas från andra datorer. Mer information finns i Disconnect-PSSession.

Den här parametern introducerades i Windows PowerShell 3.0.

Typ:SwitchParameter
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-Name

Anger ett eget namn för PSSession.

Du kan använda namnet för att referera till PSSession- när du använder andra cmdletar, till exempel Get-PSSession och Enter-PSSession. Namnet måste inte vara unikt för datorn eller den aktuella sessionen.

Typ:String[]
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-Port

Anger nätverksporten på fjärrdatorn som används för den här anslutningen. Om du vill ansluta till en fjärrdator måste fjärrdatorn lyssna på porten som anslutningen använder. Standardportarna är 5985, som är WinRM-porten för HTTP och 5986, som är WinRM-porten för HTTPS.

Innan du använder en annan port måste du konfigurera WinRM-lyssnaren på fjärrdatorn så att den lyssnar på den porten. Använd följande kommandon för att konfigurera lyssnaren:

1. winrm delete winrm/config/listener?Address=*+Transport=HTTP

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

Använd inte parametern Port om du inte måste göra det. Portinställningen i kommandot gäller för alla datorer eller sessioner där kommandot körs. En alternativ portinställning kan förhindra att kommandot körs på alla datorer.

Typ:Int32
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-Session

Anger en matris med PSSession objekt som den här cmdleten använder som modell för den nya PSSession-. Den här parametern skapar nya PSSession- objekt som har samma egenskaper som de angivna PSSession- objekt.

Ange en variabel som innehåller PSSession- objekt eller ett kommando som skapar eller hämtar PSSession- objekt, till exempel ett New-PSSession- eller Get-PSSession-kommando.

Den resulterande PSSession- objekt har samma datornamn, programnamn, anslutnings-URI, port, konfigurationsnamn, begränsningsgräns och SSL-värde (Secure Sockets Layer) som originalen, men de har ett annat visningsnamn, ID och instans-ID (GUID).

Typ:PSSession[]
Position:0
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:True
Godkänn jokertecken:False

-SessionOption

Anger avancerade alternativ för sessionen. Ange ett SessionOption- objekt, till exempel ett objekt som du skapar med hjälp av cmdleten New-PSSessionOption eller en hash-tabell där nycklarna är sessionsalternativnamn och värdena är sessionsalternativvärden.

Standardvärdena för alternativen bestäms av värdet för $PSSessionOption inställningsvariabel, om den anges. Annars upprättas standardvärdena av de alternativ som anges i sessionskonfigurationen.

Sessionsalternativvärdena har företräde framför standardvärden för sessioner som anges i $PSSessionOption-inställningsvariabeln och i sessionskonfigurationen. De har dock inte företräde framför de högsta värden, kvoter eller gränser som anges i sessionskonfigurationen.

En beskrivning av sessionsalternativen som innehåller standardvärdena finns i New-PSSessionOption. Information om $PSSessionOption-inställningsvariabeln finns i about_Preference_Variables. Mer information om sessionskonfigurationer finns i about_Session_Configurations.

Typ:PSSessionOption
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-ThrottleLimit

Anger det maximala antalet samtidiga anslutningar som kan upprättas för att köra det här kommandot. Om du utelämnar den här parametern eller anger värdet 0 (noll) används standardvärdet 32.

Begränsningsgränsen gäller endast för det aktuella kommandot, inte för sessionen eller på datorn.

Typ:Int32
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-UseSSL

Anger att den här cmdleten använder SSL-protokollet för att upprätta en anslutning till fjärrdatorn. Som standard används inte SSL.

WS-Management krypterar allt Windows PowerShell-innehåll som överförs via nätverket. Parametern UseSSL ger ytterligare ett skydd som skickar data över en HTTPS-anslutning i stället för en HTTP-anslutning.

Om du använder den här parametern, men SSL inte är tillgängligt på porten som används för kommandot, misslyckas kommandot.

Typ:SwitchParameter
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

Indata

System.String, System.URI, System.Management.Automation.Runspaces.PSSession

Du kan skicka ett sträng-, URI- eller sessionsobjekt till den här cmdleten.

Utdata

PSSession

Kommentarer

  • Den här cmdleten använder Windows PowerShell-fjärrkommunikationsinfrastrukturen. Om du vill använda den här cmdleten måste den lokala datorn och alla fjärrdatorer konfigureras för Windows PowerShell-fjärrkommunikation. Mer information finns i about_Remote_Requirements.

  • Om du vill skapa en PSSession- på den lokala datorn startar du Windows PowerShell med alternativet Kör som administratör.

  • När du är klar med PSSessionanvänder du cmdleten Remove-PSSession för att ta bort PSSession- och frigöra dess resurser.