about_Session_Configuration_Files
Breve descrição
Descreve os arquivos de configuração de sessão, que são usados em uma configuração de sessão (também conhecida como "ponto de extremidade") para definir o ambiente de sessões que usam a configuração de sessão.
Descrição longa
Essas informações só se aplicam ao PowerShell em execução no Windows.
Um “ficheiro de configuração de sessão” é um ficheiro de texto com uma extensão de nome de ficheiro .pssc que contém uma tabela hash das propriedades e valores de configuração da sessão. Você pode usar um arquivo de configuração de sessão para definir as propriedades de uma configuração de sessão. Isso define o ambiente de todas as sessões do PowerShell que usam essa configuração de sessão.
Os arquivos de configuração de sessão facilitam a criação de configurações de sessão personalizadas sem usar assemblies ou scripts C# complexos.
Uma "configuração de sessão" ou "ponto de extremidade" é uma coleção de configurações do computador local que determinam coisas como quais usuários podem criar sessões no computador; quais comandos os usuários podem executar nessas sessões; e se a sessão deve ser executada como uma conta virtual privilegiada. Para obter mais informações sobre configurações de sessão, consulte about_Session_Configurations.
As configurações de sessão foram introduzidas no Windows PowerShell 2.0 e os arquivos de configuração de sessão foram introduzidos no Windows PowerShell 3.0. Você deve usar o Windows PowerShell 3.0 para incluir um arquivo de configuração de sessão em uma configuração de sessão. No entanto, os usuários do Windows PowerShell 2.0 (e posterior) são afetados pelas configurações na configuração da sessão.
Criando sessões personalizadas
Você pode personalizar muitos recursos de uma sessão do PowerShell especificando as propriedades da sessão em uma configuração de sessão. Você pode personalizar uma sessão escrevendo um programa em C# que define um espaço de execução personalizado ou pode usar um arquivo de configuração de sessão para definir as propriedades das sessões criadas usando a configuração da sessão. Como regra geral, é mais fácil usar o arquivo de configuração de sessão do que escrever um programa em C#.
Você pode usar um arquivo de configuração de sessão para criar itens como sessões totalmente funcionais para usuários altamente confiáveis; sessões bloqueadas que permitem acesso mínimo; sessões concebidas para particulares e que contenham apenas os módulos necessários para essas tarefas; e sessões em que usuários sem privilégios só podem executar comandos específicos como uma conta privilegiada.
Além disso, você pode gerenciar se os usuários da sessão podem usar elementos da linguagem PowerShell, como blocos de script, ou se eles só podem executar comandos. Você pode gerenciar a versão do PowerShell que os usuários podem executar na sessão; gerenciar quais módulos são importados para a sessão; e gerenciar quais cmdlets, funções e aliases os usuários de sessão podem executar. Ao usar o campo RoleDefinitions, você pode dar aos usuários recursos diferentes na sessão com base na associação ao grupo.
Para obter mais informações sobre RoleDefinitions e como definir esse valor, consulte o tópico de ajuda do cmdlet New-PSRoleCapabilityFile.
Criando um arquivo de configuração de sessão
A maneira mais fácil de criar um arquivo de configuração de sessão é usando o cmdlet New-PSSessionConfigurationFile. Esse cmdlet gera um arquivo que usa a sintaxe e o formato corretos e que verifica automaticamente muitos dos valores de propriedade do arquivo de configuração.
Para obter descrições detalhadas das propriedades que você pode definir em um arquivo de configuração de sessão, consulte o tópico de ajuda do cmdlet New-PSSessionConfigurationFile.
O comando a seguir cria um arquivo de configuração de sessão que usa os valores padrão. O arquivo de configuração resultante usa apenas os valores padrão porque nenhum parâmetro além do parâmetro Path (que especifica o caminho do arquivo) está incluído:
New-PSSessionConfigurationFile -Path .\Defaults.pssc
Para exibir o novo arquivo de configuração no editor de texto padrão, use o seguinte comando:
Invoke-Item -Path .\Defaults.pssc
Para criar uma configuração de sessão para sessões nas quais o usuário pode executar comandos, mas não usar outros elementos da linguagem PowerShell, digite:
New-PSSessionConfigurationFile -LanguageMode NoLanguage
-Path .\NoLanguage.pssc
No comando anterior, definir o parâmetro LanguageMode como NoLanguage impede que os usuários façam coisas como escrever ou executar scripts ou usar variáveis.
Para criar uma configuração de sessão para sessões nas quais os usuários podem usar apenas cmdlets Get, digite:
New-PSSessionConfigurationFile -VisibleCmdlets Get-*
-Path .\GetSessions.pssc
No exemplo anterior, definir o parâmetro VisibleCmdlets como Get-* limita os usuários a cmdlets com nomes que começam com o valor da cadeia de caracteres "Get-".
Para criar uma configuração de sessão para sessões executadas sob uma conta virtual privilegiada em vez das credenciais do usuário, digite:
New-PSSessionConfigurationFile -RunAsVirtualAccount
-Path .\VirtualAccount.pssc
Para criar uma configuração de sessão para sessões nas quais os comandos visíveis para o usuário são especificados em um arquivo de recursos de função, digite:
New-PSSessionConfigurationFile -RoleDefinitions
@{ 'CONTOSO\User' = @{ RoleCapabilities = 'Maintenance' }}
-Path .\Maintenance.pssc
Usando um arquivo de configuração de sessão
Você pode incluir um arquivo de configuração de sessão ao criar uma configuração de sessão ou adicionar um arquivo à configuração de sessão posteriormente.
Para incluir um arquivo de configuração de sessão ao criar uma configuração de sessão, use o parâmetro Path do cmdlet Register-PSSessionConfiguration.
Por exemplo, o comando a seguir usa o arquivo NoLanguage.pssc quando cria uma configuração de sessão NoLanguage.
Register-PSSessionConfiguration -Name NoLanguage
-Path .\NoLanguage.pssc
Quando uma nova sessão NoLanguage é iniciada, os usuários só terão acesso aos comandos do PowerShell.
Para adicionar um arquivo de configuração de sessão a uma configuração de sessão existente, use o cmdlet Set-PSSessionConfiguration e o parâmetro Path. Isso afeta todas as novas sessões criadas com a configuração de sessão especificada. Observe que o cmdlet Set-PSSessionConfiguration altera a própria sessão e não modifica o arquivo de configuração da sessão.
Por exemplo, o comando a seguir adiciona o arquivo NoLanguage.pssc à configuração da sessão LockedDown.
Set-PSSessionConfiguration -Name LockedDown
-Path .\NoLanguage.pssc
Quando os usuários usam a configuração de sessão LockedDown para criar uma sessão, eles poderão executar cmdlets, mas não poderão criar ou usar variáveis, atribuir valores ou usar outros elementos de linguagem do PowerShell.
O comando a seguir usa o cmdlet New-PSSession para criar uma sessão no computador Srv01 que usa a configuração de sessão LockedDown, salvando uma referência de objeto à sessão na variável $s. A ACL (lista de controle de acesso) da configuração da sessão determina quem pode usá-la para criar uma sessão.
$s = New-PSSession -ComputerName Srv01
-ConfigurationName LockedDown
Como as restrições NoLanguage foram adicionadas à configuração de sessão LockedDown, os usuários em sessões LockedDown só poderão executar comandos e cmdlets do PowerShell. Por exemplo, os dois comandos a seguir usam o cmdlet Invoke-Command para executar comandos na sessão referenciada na variável $s. O primeiro comando, que executa o cmdlet Get-UICulture e não usa nenhuma variável, é bem-sucedido. O segundo comando, que obtém o valor da variável $PSUICulture, falha.
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
Editando um arquivo de configuração de sessão
Todas as configurações em uma configuração de sessão, exceto RunAsVirtualAccount e RunAsVirtualAccountGroups, podem ser modificadas editando o arquivo de configuração de sessão usado pela configuração da sessão. Para fazer isso, comece localizando a cópia ativa do arquivo de configuração da sessão.
Quando você usa um arquivo de configuração de sessão em uma configuração de sessão, o PowerShell cria uma cópia ativa do arquivo de configuração de sessão e a armazena no diretório $pshome\SessionConfig no computador local.
O local da cópia ativa de um arquivo de configuração de sessão é armazenado na propriedade ConfigFilePath do objeto de configuração de sessão.
O comando a seguir obtém o local do arquivo de configuração de sessão para a configuração de sessão NoLanguage.
(Get-PSSessionConfiguration -Name NoLanguage).ConfigFilePath
Esse comando retorna um caminho de arquivo semelhante ao seguinte:
C:\WINDOWS\System32\WindowsPowerShell\v1.0\SessionConfig\
NoLanguage_0c115179-ff2a-4f66-a5eb-e56e5692ba22.pssc
Você pode editar o arquivo .pssc em qualquer editor de texto. Depois que o arquivo for salvo, ele será empregado por quaisquer novas sessões que usem a configuração da sessão.
Se você precisar modificar as configurações RunAsVirtualAccount ou RunAsVirtualAccountGroups, deverá cancelar o registro da configuração da sessão e registrar novamente um arquivo de configuração de sessão que inclua os valores editados.
Testando um arquivo de configuração de sessão
Use o cmdlet Test-PSSessionConfigurationFile para testar arquivos de configuração de sessão editados manualmente. Isso é importante: se a sintaxe e os valores do arquivo não forem válidos, os usuários não poderão usar a configuração da sessão para criar uma sessão.
Por exemplo, o comando a seguir testa o arquivo de configuração de sessão ativa da configuração de sessão NoLanguage.
Test-PSSessionConfigurationFile -Path C:\WINDOWS\System32\
WindowsPowerShell\v1.0\SessionConfig\
NoLanguage_0c115179-ff2a-4f66-a5eb-e56e5692ba22.pssc
Se a sintaxe e os valores no arquivo de configuração forem válidos, Test-PSSessionConfigurationFile retornará True. Se a sintaxe e os valores não forem válidos, o cmdlet retornará False.
Você pode usar Test-PSSessionConfigurationFile para testar qualquer arquivo de configuração de sessão, incluindo arquivos criados pelo cmdlet New-PSSessionConfiguration. Para obter mais informações, consulte o tópico de ajuda do cmdlet Test-PSSessionConfigurationFile.
Removendo um arquivo de configuração de sessão
Não é possível remover um arquivo de configuração de sessão de uma configuração de sessão. No entanto, você pode substituir o arquivo por um novo arquivo que usa as configurações padrão. Isso efetivamente cancela as configurações usadas pelo arquivo de configuração original.
Para substituir um arquivo de configuração de sessão, crie um novo arquivo de configuração de sessão que use as configurações padrão e, em seguida, use o cmdlet Set-PSSessionConfiguration para substituir o arquivo de configuração de sessão personalizado pelo novo arquivo.
Por exemplo, os comandos a seguir criam um arquivo de configuração de sessão padrão e, em seguida, substituem o arquivo de configuração de sessão ativa na configuração de sessão NoLanguage.
New-PSSessionConfigurationFile -Path .\Default.pssc
Set-PSSessionConfiguration -Name NoLanguage
-Path .\Default.pssc
Quando esses comandos terminarem, a configuração da sessão NoLanguage realmente fornecerá suporte total ao idioma (a configuração padrão) para todas as sessões criadas com essa configuração de sessão.
Exibindo as propriedades de uma configuração de sessão Os objetos de configuração de sessão que representam configurações de sessão usando arquivos de configuração de sessão têm propriedades adicionais que facilitam a descoberta e a análise da configuração da sessão. (Observe que o nome do tipo mostrado abaixo inclui uma definição de modo de exibição formatado.) Você pode exibir as propriedades executando o cmdlet Get-PSSessionConfiguration e canalizando os dados retornados para o cmdlet 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...
Essas propriedades facilitam a pesquisa de configurações de sessão específicas. Por exemplo, você pode usar a propriedade ExecutionPolicy para localizar uma configuração de sessão que ofereça suporte a sessões com a diretiva de execução RemoteSigned. Observe que, como a propriedade ExecutionPolicy existe apenas em sessões que usam arquivos de configuração de sessão, o comando pode não retornar todas as configurações de sessão qualificadas.
Get-PSSessionConfiguration |
where {$_.ExecutionPolicy -eq "RemoteSigned"}
O comando a seguir obtém configurações de sessão nas quais o RunAsUser é o administrador do Exchange.
Get-PSSessionConfiguration |
where {$_.RunAsUser -eq "Exchange01\Admin01"}
Para exibir informações sobre as definições de função associadas a uma configuração, use o cmdlet Get-PSSessionCapability. Esse cmdlet permite determinar os comandos e o ambiente disponíveis para usuários específicos em pontos de extremidade específicos.
Notas
As configurações de sessão também suportam um tipo de sessão conhecida como sessão "vazia". Um tipo de sessão vazia permite criar sessões personalizadas com comandos selecionados. Se você não adicionar módulos, funções ou scripts a uma sessão vazia, a sessão será limitada a expressões e pode não ter qualquer utilidade prática. A propriedade SessionType informa se você está ou não trabalhando com uma sessão vazia.
Consulte também
- about_Session_Configurations
- New-PSRoleCapabilityFile
- New-PSSession
- Get-PSSessionCapability
- Disable-PSSessionConfiguration
- Enable-PSSessionConfiguration
- Get-PSSessionConfiguration
- Register-PSSessionConfiguration
- Set-PSSessionConfiguration
- Unregister-PSSessionConfiguration
- New-PSSessionConfigurationFile
- Test-PSSessionConfigurationFile