about_Session_Configuration_Files

Kort beskrivning

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

Lång beskrivning

Den här informationen gäller endast för PowerShell som körs i Windows.

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 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 lokala datorinställningar som avgör vilka saker som användare 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 runspace, 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 som fullständigt fungerande sessioner för mycket betrodda användare. låsta sessioner som tillåter minimal åtkomst. sessioner som är utformade för särskilda och som endast innehåller de moduler som krävs för dessa uppgifter. och sessioner där oprivilegierade användare bara kan köra specifika kommandon som ett privilegierat konto.

Dessutom kan du hantera om användare av sessionen kan använda PowerShell-språkelement som skriptblock eller om de bara kan köra kommandon. Du kan hantera vilken version av PowerShell-användare som kan köras i sessionen. hantera vilka moduler som importeras till sessionen. och hantera vilka cmdletar, 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 cmdleten New-PSRoleCapabilityFile.

Skapa en sessionskonfigurationsfil

Det enklaste sättet att skapa en sessionskonfigurationsfil är att använda cmdleten New-PSSessionConfigurationFile. Den här cmdleten genererar en fil som använder rätt syntax och format, och som automatiskt verifierar många av egenskapsvärdena för konfigurationsfilen.

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

Följande kommando skapar en sessionskonfigurationsfil som använder standardvärdena. Den resulterande konfigurationsfilen använder endast standardvärdena eftersom inga andra parametrar än sökvägsparametern (som anger filsö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 inställningen av parametern LanguageMode till NoLanguage användare från att göra sådant som att skriva eller köra skript eller använda variabler.

Om du vill skapa en sessionskonfiguration för sessioner där användarna bara kan använda Hämta cmdletar skriver du:

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

I föregående exempel begränsar inställningen visibleCmdlets-parametern till Get-* användare till cmdletar 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 kommandon som är synliga för användaren anges i en fil med rollfunktioner 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ägger 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 i cmdleten Register-PSSessionConfiguration.

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

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 cmdleten Set-PSSessionConfiguration och parametern Path. Detta påverkar alla nya sessioner som skapats med den angivna sessionskonfigurationen. Observera att cmdleten Set-PSSessionConfiguration ändrar själva sessionen och inte ändrar sessionskonfigurationsfilen.

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

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

När användarna använder konfigurationen för LockedDown-sessioner för att skapa en session kan de köra cmdletar, 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 variabeln $s. ACL (åtkomstkontrollistan) i 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 konfigurationen för LockedDown-sessionen kan användare i LockedDown-sessioner bara köra PowerShell-kommandon och cmdletar. Följande två kommandon använder till exempel cmdleten Invoke-Command för att köra kommandon i den session som refereras i variabeln $s. Det första kommandot, som kör cmdleten Get-UICulture och inte använder några variabler, lyckas. Det andra kommandot, som hämtar värdet för variabeln $PSUICulture, 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 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 kan användarna inte 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 returnerar Test-PSSessionConfigurationFile Sant. Om syntaxen och värdena inte är giltiga returnerar cmdleten False.

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

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 de inställningar 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 konfigurationsfil för standardsessionen och ersätter sedan den aktiva sessionskonfigurationsfilen i NoLanguage-sessionskonfigurationen.

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

När dessa kommandon är klara ger konfigurationen av NoLanguage-sessionen faktiskt fullständigt språkstöd (standardinställningen) för alla sessioner som skapats med den sessionskonfigurationen.

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

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 körningsprincipen RemoteSigned. Observera att eftersom egenskapen ExecutionPolicy endast finns på sessioner som använder sessionskonfigurationsfiler kanske kommandot inte returnerar alla kvalificerande 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 rolldefinitioner som är associerade med en konfiguration använder du cmdleten Get-PSSessionCapability. 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.

Kommentar

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 är till någon praktisk användning. Egenskapen SessionType anger om du arbetar med en tom session eller inte.

Se även