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
- about_Session_Configurations
- New-PSRoleCapabilityFile
- Ny PSSession
- Get-PSSessionCapability
- Disable-PSSessionConfiguration
- Enable-PSSessionConfiguration
- Get-PSSessionConfiguration
- Register-PSSessionConfiguration
- Set-PSSessionConfiguration
- Avregistrera PSSessionConfiguration
- New-PSSessionConfigurationFile
- Test-PSSessionConfigurationFile