about_Session_Configuration_Files

Kort beskrivning

Beskriver sessionskonfigurationsfiler som används i en sessionskonfiguration (även kallat en "slutpunkt") för att definiera miljön för sessioner som använder sessionskonfigurationen.

Lång beskrivning

En "sessionskonfigurationsfil" är en textfil med filnamnstillägget .pssc som innehåller en hash-tabell med egenskaper och värden för sessionskonfiguration. Du kan använda en sessionskonfigurationsfil för att ange egenskaperna för en sessionskonfiguration. När du gör det definieras miljön för alla PowerShell-sessioner som använder den sessionskonfigurationen.

Sessionskonfigurationsfiler gör det enkelt att skapa anpassade sessionskonfigurationer utan att använda komplexa C#-sammansättningar eller skript.

En "sessionskonfiguration" eller "slutpunkt" är en samling inställningar för lokala datorer som avgör till exempel vilka användare som kan skapa sessioner på datorn. vilka kommandon som användare kan köra i dessa sessioner; och om sessionen ska köras som ett privilegierat virtuellt konto. För ytterligare information om sessionskonfigurationer, se about_Session_Configurations.

Sessionskonfigurationer introducerades i Windows PowerShell 2.0 och sessionskonfigurationsfiler introducerades i Windows PowerShell 3.0. Du måste använda Windows PowerShell 3.0 för att inkludera en sessionskonfigurationsfil i en sessionskonfiguration. Användare av Windows PowerShell 2.0 (och senare) påverkas dock av inställningarna i sessionskonfigurationen.

Skapa anpassade sessioner

Du kan anpassa många funktioner i en PowerShell-session genom att ange sessionsegenskaper i en sessionskonfiguration. Du kan anpassa en session genom att skriva ett C#-program som definierar ett anpassat körningsutrymme, eller så kan du använda en sessionskonfigurationsfil för att definiera egenskaperna för sessioner som skapas med hjälp av sessionskonfigurationen. Som en allmän regel är det enklare att använda sessionskonfigurationsfilen än att skriva ett C#-program.

Du kan använda en sessionskonfigurationsfil för att skapa objekt, till exempel fullt fungerande sessioner för mycket betrodda användare. låsta sessioner som tillåter minimal åtkomst; sessioner som utformats för specifika och som endast innehåller de moduler som krävs för dessa uppgifter; - och -sessioner där användare utan privilegier bara kan köra specifika kommandon som ett privilegierat konto.

Dessutom kan du ange om användarna av sessionen kan använda PowerShell-språkelement som skriptblock eller om de bara kan köra kommandon. Du kan hantera versionen av PowerShell-användare som kan köras i sessionen. hantera vilka moduler som importeras till sessionen; och hantera vilka cmdlets, funktioner och alias som sessionsanvändare kan köra. När du använder fältet RoleDefinitions kan du ge användarna olika funktioner i sessionen baserat på gruppmedlemskap.

Mer information om RoleDefinitions och hur du definierar det här värdet finns i hjälpavsnittet för New-PSRoleCapabilityFile cmdlet.

Skapa en sessionskonfigurationsfil

Det enklaste sättet att skapa en sessionskonfigurationsfil är att använda New-PSSessionConfigurationFile cmdlet. Denna cmdlet genererar en fil som använder rätt syntax och format, och som automatiskt verifierar många av konfigurationsfilens egenskapsvärden.

Detaljerade beskrivningar av de egenskaper som du kan ange i en sessionskonfigurationsfil finns i hjälpavsnittet för New-PSSessionConfigurationFile cmdlet.

Följande kommando skapar en sessionskonfigurationsfil som använder standardvärdena. Den resulterande konfigurationsfilen använder endast standardvärdena eftersom inga andra parametrar än parametern Path (som anger sökvägen) ingår:

New-PSSessionConfigurationFile -Path .\Defaults.pssc

Om du vill visa den nya konfigurationsfilen i standardtextredigeraren använder du följande kommando:

Invoke-Item -Path .\Defaults.pssc

Om du vill skapa en sessionskonfiguration för sessioner där användaren kan köra kommandon, men inte använda andra element i PowerShell-språket, skriver du:

New-PSSessionConfigurationFile -LanguageMode NoLanguage
-Path .\NoLanguage.pssc

I föregående kommando förhindrar du att användare skriver eller kör skript eller använder variabler genom att ange Parametern LanguageMode till NoLanguage.

Om du vill skapa en sessionskonfiguration för sessioner där användarna bara kan använda Get-cmdlets skriver du:

New-PSSessionConfigurationFile -VisibleCmdlets Get-*
-Path .\GetSessions.pssc

I föregående exempel anger du parametern VisibleCmdlets till Get-* begränsar användare till cmdlets som har namn som börjar med strängvärdet "Get-".

Om du vill skapa en sessionskonfiguration för sessioner som körs under ett privilegierat virtuellt konto i stället för användarens autentiseringsuppgifter skriver du:

New-PSSessionConfigurationFile -RunAsVirtualAccount
-Path .\VirtualAccount.pssc

Om du vill skapa en sessionskonfiguration för sessioner där kommandona som är synliga för användaren anges i en rollfunktionsfil skriver du:

New-PSSessionConfigurationFile -RoleDefinitions
@{ 'CONTOSO\User' = @{ RoleCapabilities = 'Maintenance' }}
-Path .\Maintenance.pssc

Använda en sessionskonfigurationsfil

Du kan inkludera en sessionskonfigurationsfil när du skapar en sessionskonfiguration eller lägga till en fil i sessionskonfigurationen vid ett senare tillfälle.

Om du vill inkludera en sessionskonfigurationsfil när du skapar en sessionskonfiguration använder du parametern Path Register-PSSessionConfiguration cmdlet.

Följande kommando använder till exempel filen NoLanguage.pssc när en NoLanguage-sessionskonfiguration skapas.

Register-PSSessionConfiguration -Name NoLanguage
-Path .\NoLanguage.pssc

När en ny NoLanguage-session startar har användarna bara åtkomst till PowerShell-kommandon.

Om du vill lägga till en sessionskonfigurationsfil i en befintlig sessionskonfiguration använder du Set-PSSessionConfiguration cmdlet och parametern Path. Detta påverkar alla nya sessioner som skapas med den angivna sessionskonfigurationen. Observera att Set-PSSessionConfiguration-cmdleten ändrar själva sessionen och inte ändrar sessionskonfigurationsfilen.

Följande kommando lägger till exempel till filen NoLanguage.pssc i sessionskonfigurationen LockedDown.

Set-PSSessionConfiguration -Name LockedDown
-Path .\NoLanguage.pssc

När användarna använder LockedDown-sessionskonfigurationen för att skapa en session kommer de att kunna köra cmdlets, men de kommer inte att kunna skapa eller använda variabler, tilldela värden eller använda andra PowerShell-språkelement.

Följande kommando använder cmdleten New-PSSession för att skapa en session på datorn Srv01 som använder sessionskonfigurationen LockedDown och sparar en objektreferens till sessionen i $s variabeln. ACL:en (åtkomstkontrollista) för sessionskonfigurationen avgör vem som kan använda den för att skapa en session.

$s = New-PSSession -ComputerName Srv01
-ConfigurationName LockedDown

Eftersom NoLanguage-begränsningarna har lagts till i lockedDown-sessionskonfigurationen kommer användare i LockedDown-sessioner endast att kunna köra PowerShell-kommandon och cmdlets. Följande två kommandon använder till exempel cmdleten Invoke-Command för att köra kommandon i sessionen som refereras i $s variabeln. Det första kommandot, som kör Get-UICulture cmdlet och inte använder några variabler, lyckas. Det andra kommandot, som hämtar värdet för $PSUICulture variabeln, misslyckas.

Invoke-Command -Session $s {Get-UICulture}
en-US

Invoke-Command -Session $s {$PSUICulture}
The syntax is not supported by this runspace. This might be
because it is in no-language mode.
+ CategoryInfo          : ParserError: ($PSUICulture:String) [],
ParseException
+ FullyQualifiedErrorId : ScriptsNotAllowed

Redigera en sessionskonfigurationsfil

Alla inställningar i en sessionskonfiguration förutom RunAsVirtualAccount och RunAsVirtualAccountGroups kan ändras genom att redigera sessionskonfigurationsfilen som används av sessionskonfigurationen. Det gör du genom att börja med att hitta den aktiva kopian av sessionskonfigurationsfilen.

När du använder en sessionskonfigurationsfil i en sessionskonfiguration skapar PowerShell en aktiv kopia av sessionskonfigurationsfilen och lagrar den i $ katalogen pshome \ SessionConfig på den lokala datorn.

Platsen för den aktiva kopian av en sessionskonfigurationsfil lagras i egenskapen ConfigFilePath för sessionskonfigurationsobjektet.

Följande kommando hämtar platsen för sessionskonfigurationsfilen för noLanguage-sessionskonfigurationen.

(Get-PSSessionConfiguration -Name NoLanguage).ConfigFilePath

Kommandot returnerar en filsökväg som liknar följande:

C:\WINDOWS\System32\WindowsPowerShell\v1.0\SessionConfig\
NoLanguage_0c115179-ff2a-4f66-a5eb-e56e5692ba22.pssc

Du kan redigera .pssc-filen i valfri textredigerare. När filen har sparats används den av alla nya sessioner som använder sessionskonfigurationen.

Om du behöver ändra inställningarna För RunAsVirtualAccount eller RunAsVirtualAccountGroups måste du avregistrera sessionskonfigurationen och registrera om en sessionskonfigurationsfil som innehåller de redigerade värdena.

Testa en sessionskonfigurationsfil

Använd cmdleten Test-PSSessionConfigurationFile för att testa manuellt redigerade sessionskonfigurationsfiler. Det är viktigt: om filsyntaxen och värdena inte är giltiga kommer användarna inte att kunna använda sessionskonfigurationen för att skapa en session.

Följande kommando testar till exempel den aktiva sessionskonfigurationsfilen för noLanguage-sessionskonfigurationen.

Test-PSSessionConfigurationFile -Path C:\WINDOWS\System32\
WindowsPowerShell\v1.0\SessionConfig\
NoLanguage_0c115179-ff2a-4f66-a5eb-e56e5692ba22.pssc

Om syntaxen och värdena i konfigurationsfilen är giltiga returneras Test-PSSessionConfigurationFile sant. Om syntaxen och värdena inte är giltiga returnerar cmdleten False.

Du kan använda Test-PSSessionConfigurationFile för att testa valfri sessionskonfigurationsfil, inklusive filer som New-PSSessionConfiguration cmdleten skapar. Mer information finns i hjälpavsnittet för Test-PSSessionConfigurationFile cmdlet.

Ta bort en sessionskonfigurationsfil

Du kan inte ta bort en sessionskonfigurationsfil från en sessionskonfiguration. Du kan dock ersätta filen med en ny fil som använder standardinställningarna. Detta avbryter effektivt inställningarna som används av den ursprungliga konfigurationsfilen.

Om du vill ersätta en sessionskonfigurationsfil skapar du en ny sessionskonfigurationsfil som använder standardinställningarna och använder sedan cmdleten Set-PSSessionConfiguration för att ersätta den anpassade sessionskonfigurationsfilen med den nya filen.

Följande kommandon skapar till exempel en standardkonfigurationsfil för sessionen och ersätter sedan den aktiva sessionskonfigurationsfilen i sessionskonfigurationen NoLanguage.

New-PSSessionConfigurationFile -Path .\Default.pssc
Set-PSSessionConfiguration -Name NoLanguage
-Path .\Default.pssc

När de här kommandona är klara ger noLanguage-sessionskonfigurationen faktiskt fullständigt språkstöd (standardinställningen) för alla sessioner som skapas med den sessionskonfigurationen.

Visa egenskaper för en sessionskonfiguration De sessionskonfigurationsobjekt som representerar sessionskonfigurationer med hjälp av sessionskonfigurationsfiler har ytterligare egenskaper som gör det enkelt att identifiera och analysera sessionskonfigurationen. (Observera att det typnamn som visas nedan innehåller en formaterad vydefinition.) Du kan visa egenskaperna genom att köra Get-PSSessionConfiguration cmdlet och piping av returnerade data till Get-Member cmdleten:

Get-PSSessionConfiguration NoLanguage | Get-Member
TypeName: Microsoft.PowerShell.Commands.PSSessionConfigurationCommands
#PSSessionConfiguration

Name                          MemberType     Definition
----                          ----------     ----------
Equals                        Method         bool Equals(System.O...
GetHashCode                   Method         int GetHashCode()
GetType                       Method         type GetType()
ToString                      Method         string ToString()
Architecture                  NoteProperty   System.String Archit...
Author                        NoteProperty   System.String Author...
AutoRestart                   NoteProperty   System.String AutoRe...
Capability                    NoteProperty   System.Object[] Capa...
CompanyName                   NoteProperty   System.String Compan...
configfilepath                NoteProperty   System.String config...
Copyright                     NoteProperty   System.String Copyri...
Enabled                       NoteProperty   System.String Enable...
ExactMatch                    NoteProperty   System.String ExactM...
ExecutionPolicy               NoteProperty   System.String Execut...
Filename                      NoteProperty   System.String Filena...
GUID                          NoteProperty   System.String GUID=0...
ProcessIdleTimeoutSec         NoteProperty   System.String Proces...
IdleTimeoutms                 NoteProperty   System.String IdleTi...
lang                          NoteProperty   System.String lang=e...
LanguageMode                  NoteProperty   System.String Langua...
MaxConcurrentCommandsPerShell NoteProperty   System.String MaxCon...
MaxConcurrentUsers            NoteProperty   System.String MaxCon...
MaxIdleTimeoutms              NoteProperty   System.String MaxIdl...
MaxMemoryPerShellMB           NoteProperty   System.String MaxMem...
MaxProcessesPerShell          NoteProperty   System.String MaxPro...
MaxShells                     NoteProperty   System.String MaxShells
MaxShellsPerUser              NoteProperty   System.String MaxShe...
Name                          NoteProperty   System.String Name=N...
PSVersion                     NoteProperty   System.String PSVersion
ResourceUri                   NoteProperty   System.String Resour...
RunAsPassword                 NoteProperty   System.String RunAsP...
RunAsUser                     NoteProperty   System.String RunAsUser
SchemaVersion                 NoteProperty   System.String Schema...
SDKVersion                    NoteProperty   System.String SDKVer...
OutputBufferingMode           NoteProperty   System.String Output...
SessionType                   NoteProperty   System.String Sessio...
UseSharedProcess              NoteProperty   System.String UseSha...
SupportsOptions               NoteProperty   System.String Suppor...
xmlns                         NoteProperty   System.String xmlns=...
XmlRenderingType              NoteProperty   System.String XmlRen...
Permission                    ScriptProperty System.Object Permis...

De här egenskaperna gör det enkelt att söka efter specifika sessionskonfigurationer. Du kan till exempel använda egenskapen ExecutionPolicy för att hitta en sessionskonfiguration som stöder sessioner med remoteSigned-körningsprincipen. Observera att eftersom egenskapen ExecutionPolicy endast finns på sessioner som använder sessionskonfigurationsfiler kanske kommandot inte returnerar alla kvalificerade sessionskonfigurationer.

Get-PSSessionConfiguration |
where {$_.ExecutionPolicy -eq "RemoteSigned"}

Följande kommando hämtar sessionskonfigurationer där RunAsUser är Exchange administratör.

 Get-PSSessionConfiguration |
where {$_.RunAsUser -eq "Exchange01\Admin01"}

Om du vill visa information om rolldefinitionerna som är associerade med en konfiguration använder Get-PSSessionCapability cmdlet. Med den här cmdleten kan du fastställa vilka kommandon och miljöer som är tillgängliga för specifika användare i specifika slutpunkter.

Kommentarer

Sessionskonfigurationer stöder också en typ av session som kallas en "tom" session. Med en tom sessionstyp kan du skapa anpassade sessioner med valda kommandon. Om du inte lägger till moduler, funktioner eller skript i en tom session är sessionen begränsad till uttryck och kanske inte har någon praktisk användning. Egenskapen SessionType anger om du arbetar med en tom session eller inte.

Se även

about_Session_Configurations

New-PSSession

Disable-PSSessionConfiguration

Enable-PSSessionConfiguration

Get-PSSessionConfiguration

New-PSSessionConfigurationFile

Register-PSSessionConfiguration

Set-PSSessionConfiguration

Test-PSSessionConfigurationFile

Avregistrera PSSessionConfiguration

Get-PSSessionCapability

New-PSRoleCapabilityFile