Dela via


New-PSSession

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

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 i 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 sedan stängs.

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.

Du kan nu 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-objekten 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 de nya PSSession-objekten till variabler: $s 1, $s 2, $s 3. Den tilldelar Server01 PSSession 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 serverport 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 för att lyssna 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 slut och en ny PSSession behövs för att avlasta en del av efterfrågan.

Kommandot använder sessionsparameternNew-PSSession för att ange PSSession som sparats i variabeln $s. Den använder autentiseringsuppgifterna för Domän1\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 skapats på kommandoraden med lokalt omfång och PSSession-objekt som skapats i ett skript har skriptomfång.

Om du vill skapa en PSSession med globalt omfång skapar du en ny PSSession och lagrar sedan PSSession i en variabel som omvandlas 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-objekten 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 URI-parametern 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-objekten .

Det första kommandot skapar en ny PSSession på var och en av datorerna som anges i Servers.txt-filen. 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 av en domänadministratör och använder parametern ThrottleLimit för att begränsa kommandot till 16 samtidiga anslutningar. Kommandot sparar PSSession-objekten i variabeln $s.

Det andra kommandot använder asjob-parametern för cmdleten Invoke-Command för att starta ett bakgrundsjobb som kör ett kommando i vart och ett Get-Process PowerShell av PSSession-objekten 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 ett 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 denna cmdlet 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 Windows PowerShell inte anslutningar, men du kan använda den här parametern för att omdirigera anslutningen.

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

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

-ApplicationName

Anger programnamnsegmentet 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 egenskapen URLPrefix för en lyssnare på fjärrdatorn.

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

-Authentication

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

  • Standardvärde
  • Basic
  • Credssp
  • Sammandrag
  • Kerberos
  • Negotiate
  • 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 autentiseringsuppgifterna skickas till en fjärrdator som ska autentiseras, är utformad för kommandon som kräver autentisering på fler ä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.

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

Anger certifikatet för den digitala offentliga nyckeln (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 på enheten Windows PowerShell Cert:.

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

-ComputerName

Anger en matris med namn på datorer. Denna cmdlet 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. Standard ä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ändiga 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 finnas med i listan WinRM TrustedHosts 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 börjar du Windows PowerShell med alternativet Kör som administratör.

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

-ConfigurationName

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

Ange ett konfigurationsnamn eller en fullständigt kvalificerad resurs-URI för en sessionskonfiguration. Om du bara anger konfigurationsnamnet läggs följande schema-URI till: 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.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters: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 en ConnectionURI kan du använda parametrarna UseSSL, ComputerName, Port och ApplicationName för att ange ConnectionURI-värdena .

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 standardportarna: 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 såvida du inte använder parametern AllowRedirection i kommandot.

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

-Credential

Anger ett användarkonto som har behörighet att utföra den här åtgärden. Standard ä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 objekt som returneras av cmdleten Get-Credential.

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

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

-EnableNetworkAccess

Anger att denna cmdlet 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 denna cmdlet 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 Autentisering , 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.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 behöver inte vara unikt för datorn eller den aktuella sessionen.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 portparametern om du inte måste 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.

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

-Session

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

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

De resulterande PSSession-objekten 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).

Type:PSSession[]
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters: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ällningsvariabeln, om det har angetts. Annars upprättas standardvärdena av de alternativ som anges i sessionskonfigurationen.

Sessionsalternativvärdena har företräde framför standardvärdena 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 angetts 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. För ytterligare information om sessionskonfigurationer, se about_Session_Configurations.

Type:PSSessionOption
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 datorn.

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

-UseSSL

Anger att denna cmdlet 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 ett ytterligare skydd som skickar data via 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.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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ärrkommunikationsinfrastruktur. 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 börjar du Windows PowerShell med alternativet Kör som administratör.

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