about_Session_Configurations

Breve descrição

Descreve as configurações de sessão, que determinam os usuários que podem se conectar ao computador remotamente e os comandos que eles podem executar.

Descrição longa

Uma configuração de sessão, também conhecida como "ponto de extremidade", é um grupo de configurações no computador local que definem o ambiente para as sessões do PowerShell que são criadas quando usuários remotos ou locais se conectam ao PowerShell no computador local.

Os administradores do computador podem usar configurações de sessão para proteger o computador e definir ambientes personalizados para usuários que se conectam ao computador.

Os administradores também podem usar configurações de sessão para determinar as permissões necessárias para se conectar ao computador remotamente. Por padrão, apenas os membros do grupo Administradores têm permissão para usar a configuração da sessão para se conectar remotamente, mas você pode alterar as configurações padrão para permitir que todos os usuários, ou usuários selecionados, se conectem remotamente ao seu computador.

A partir do PowerShell 3.0, você pode usar um arquivo de configuração de sessão para definir os elementos de uma configuração de sessão. Esse recurso facilita a personalização de sessões sem escrever código e a descoberta das propriedades de uma configuração de sessão. Para criar um arquivo de configuração de sessão, use o cmdlet New-PSSessionConfiguration. Para obter mais informações sobre arquivos de configuração de sessão, consulte about_Session_Configuration_Files.

As configurações de sessão são um recurso da comunicação remota do PowerShell baseada em WSMAN. Eles são usados somente quando você usa os New-PSSessioncmdlets , Invoke-Commandou Enter-PSSession para se conectar a um computador Windows remoto.

Para gerenciar as configurações de sessão em um computador Windows, inicie o PowerShell com a opção Executar como administrador .

Sobre as configurações de sessão

Cada sessão do PowerShell usa uma configuração de sessão. Isso inclui sessões persistentes que você cria usando os cmdlets New-PSSession ou Enter-PSSession e as sessões temporárias que o PowerShell cria quando você usa o parâmetro ComputerName de um cmdlet que usa a tecnologia de comunicação remota baseada em WS-Management, como Invoke-Command.

Os administradores podem usar configurações de sessão para proteger os recursos do computador e criar ambientes personalizados para usuários que se conectam ao computador. Por exemplo, você pode usar uma configuração de sessão para limitar o tamanho dos objetos que o computador recebe na sessão, para definir o modo de idioma da sessão e para especificar os cmdlets, provedores e funções disponíveis na sessão.

Ao configurar o descritor de segurança de uma configuração de sessão, você determina quem pode usar a configuração de sessão para se conectar ao computador. Os usuários devem ter permissão Executar para uma configuração de sessão para usá-la em uma sessão. Se um usuário não tiver as permissões necessárias para usar qualquer uma das configurações de sessão em um computador, o usuário não poderá se conectar ao computador remotamente.

Por padrão, apenas os administradores do computador têm permissão para usar as configurações de sessão padrão. Mas, você pode alterar os descritores de segurança para permitir que todos, ninguém ou apenas usuários selecionados usem as configurações de sessão no seu computador.

Configurações de sessão integradas

O PowerShell 3.0 inclui configurações de sessão internas chamadas Microsoft.PowerShell e Microsoft.PowerShell.Workflow. Em computadores que executam versões de 64 bits do Windows, o PowerShell também fornece Microsoft.PowerShell32, uma configuração de sessão de 32 bits.

A configuração de sessão do Microsoft.PowerShell é usada para sessões por padrão, ou seja, quando um comando para criar uma sessão não inclui o parâmetro ConfigurationName do cmdlet New-PSSession, Enter-PSSession ou Invoke-Command.

Os descritores de segurança para as configurações de sessão padrão permitem que apenas membros do grupo Administradores no computador local os utilizem. Como tal, apenas os membros do grupo Administradores podem ligar-se ao computador remotamente, a menos que altere as predefinições.

Você pode alterar as configurações de sessão padrão usando a variável de preferência $PSSessionConfigurationName. Para obter mais informações, consulte about_Preference_Variables.

Exibindo configurações de sessão no computador local

Para obter as configurações de sessão em seu computador local, use o cmdlet Get-PSSessionConfiguration.

Por exemplo, escreva:

PS C:> Get-PSSessionConfiguration | Format-List -Property Name, Permission

Name       : microsoft.powershell
Permission : BUILTIN\Administrators AccessAllowed

Name       : microsoft.powershell.workflow
Permission : BUILTIN\Administrators AccessAllowed

Name       : microsoft.powershell32
Permission : BUILTIN\Administrators AccessAllowed

O objeto de configuração de sessão é expandido no PowerShell 3.0 para exibir as propriedades da configuração de sessão que são configuradas usando um arquivo de configuração de sessão.

Por exemplo, para ver todas as propriedades de um objeto de configuração de sessão, digite:

PS C:> Get-PSSessionConfiguration | Format-List -Property *

Você também pode usar o provedor WSMan no PowerShell para exibir configurações de sessão. O provedor WSMan cria uma unidade WSMAN: em sua sessão.

Na unidade WSMAN:, as configurações de sessão estão no nó Plug-in. (Todas as configurações de sessão estão no nó Plug-in, mas há itens no nó Plug-in que não são configurações de sessão.)

Por exemplo, para exibir as configurações de sessão no computador local, digite:

PS C:> dir wsman:\localhost\plugin\microsoft*

WSManConfig: Microsoft.WSMan.Management\WSMan::localhost\Plugin

Type       Keys                              Name
----       ----                              ----
Container  {Name=microsoft.powershell}       microsoft.powershell
Container  {Name=microsoft.powershell.wor... microsoft.powershell.workflow
Container  {Name=microsoft.powershell32}     microsoft.powershell32

Exibindo configurações de sessão em um computador remoto

Para exibir as configurações de sessão em um computador remoto, use o cmdlet Connect-WSMan para adicionar uma nota para o computador remoto à unidade WSMAN: em seu computador local e, em seguida, use a unidade WSMAN: para exibir as configurações de sessão.

Por exemplo, o comando a seguir adiciona um nó para o computador remoto Server01 à unidade WSMAN: no computador local.

PS C:> Connect-WSMan server01.corp.fabrikam.com

Quando o comando estiver concluído, você poderá navegar até o nó do computador Server01 para exibir as configurações da sessão.

Por exemplo:

PS C:> cd wsman:

PS WSMan:> dir

ComputerName                                  Type
------------                                  ----
localhost                                     Container
server01.corp.fabrikam.com                    Container

PS WSMan:> dir server01\plugin\

WSManConfig: Microsoft.WSMan.Management\WSMan::server01.corp.fabrikam.com\Pl
ugin

Type       Keys                              Name
----       ----                              ----
Container  {Name=microsoft.powershell}       microsoft.powershell
Container  {Name=microsoft.powershell.wor... microsoft.powershell.workflow
Container  {Name=microsoft.powershell32}     microsoft.powershell32

Alterando o descritor de segurança de uma configuração de sessão

No Windows Server 2012 e versões mais recentes do Windows Server, as configurações de sessão internas são habilitadas para usuários remotos por padrão. Em outras versões suportadas do Windows, você deve alterar os descritores de segurança das configurações de sessão para permitir o acesso remoto.

Para habilitar o acesso remoto às configurações de sessão no computador, use o cmdlet Enable-PSRemoting. Este cmdlet cria duas configurações de sessão:

  • com o nome definido como: "PowerShell." + "versão atual do PowerShell"
  • com o nome "PowerShell.6", desvinculado de qualquer versão específica do PowerShell.

Além disso, por padrão, apenas os membros do grupo Administradores no computador têm permissão Executar para as configurações de sessão padrão, mas você pode alterar os descritores de segurança nas configurações de sessão padrão e em quaisquer configurações de sessão criadas.

Para dar permissão a outros usuários para se conectarem ao computador remotamente, use o cmdlet Set-PSSessionConfiguration para adicionar permissões "Executar" para esses usuários aos descritores de segurança das configurações de sessão Microsoft.PowerShell e Microsoft.PowerShell32.

Por exemplo, o comando a seguir abre uma página de propriedades que permite alterar o descritor de segurança para a configuração de sessão padrão do Microsoft.PowerShell.

Set-PSSessionConfiguration -name Microsoft.PowerShell `
  -ShowSecurityDescriptorUI

Para negar a permissão de todos para todas as configurações de sessão no computador, use o cmdlet Disable-PSSessionConfiguration. Por exemplo, o comando a seguir desabilita as configurações de sessão padrão no computador.

PS C:> Disable-PSSessionConfiguration -Name Microsoft.PowerShell

Para impedir que usuários remotos se conectem ao computador, mas permitir que usuários locais se conectem, use o cmdlet Disable-PSRemoting. Disable-PSRemoting adiciona uma entrada "Network_Deny_All" a todas as configurações de sessão no computador.

PS C:> Disable-PSRemoting

Para permitir que usuários remotos usem todas as configurações de sessão no computador, use o cmdlet Enable-PSRemoting ou Enable-PSSessionConfiguration. Por exemplo, o comando a seguir permite o acesso remoto às configurações de sessão internas.

PS C:> Enable-PSSessionConfiguration -name Microsoft.Power*

Para fazer outras alterações no descritor de segurança de uma configuração de sessão, use o cmdlet Set-PSSessionConfiguration. Use o parâmetro SecurityDescriptorSDDL para enviar um valor de cadeia de caracteres SDDL. Use o parâmetro ShowSecurityDescriptorUI para exibir uma folha de propriedades da interface do usuário que ajuda você a criar um novo SDDL.

Por exemplo:

Set-PSSessionConfiguration -Name Microsoft.PowerShell `
  -ShowSecurityDescriptorUI

Criando uma nova configuração de sessão

Para criar uma nova configuração de sessão no computador local, use o cmdlet Register-PSSessionConfiguration. Para definir a nova configuração de sessão, você pode usar um assembly C#, um script do PowerShell e os parâmetros do cmdlet Register-PSSessionConfiguration.

Por exemplo, o comando a seguir cria uma configuração de sessão idêntica à configuração de sessão do Microsoft.PowerShell, exceto que limita os dados recebidos de um comando remoto a 20 megabytes (MB). (O padrão é 50 MB).

Register-PSSessionConfiguration -Name NewConfig `
  -MaximumReceivedDataSizePerCommandMB 20

Ao criar uma configuração de sessão, você pode gerenciá-la usando os outros cmdlets de configuração de sessão e ela aparece na unidade WSMAN:.

Para obter mais informações, consulte Register-PSSessionConfiguration.

Removendo uma configuração de sessão

Para remover uma configuração de sessão do computador local, use o cmdlet Unregister-PSSessionConfiguration. Por exemplo, o comando a seguir remove a configuração da sessão NewConfig do computador.

PS C:> Unregister-PSSessionConfiguration -Name NewConfig

Para obter mais informações, consulte Unregister-PSSessionConfiguration.

Restaurando uma configuração de sessão

Para restaurar uma configuração de sessão padrão que foi excluída (não registrada) acidentalmente, use o cmdlet Enable-PSRemoting.

O cmdlet Enable-PSRemoting recria todas as configurações de sessões padrão que não existem no computador. Ele não substitui nem altera os valores de propriedade das configurações de sessão existentes.

Para restaurar os valores de propriedade originais de uma configuração de sessão padrão, use Unregister-PSSessionConfiguration para excluir a configuração de sessão e, em seguida, use o cmdlet Enable-PSRemoting para recriá-la.

Selecionando uma configuração de sessão

Para selecionar uma configuração de sessão específica para uma sessão, use o parâmetro ConfigurationName de New-PSSession, Enter-PSSession ou Invoke-Command.

Por exemplo, este comando usa o cmdlet New-PSSession para iniciar uma PSSession no computador Server01. O comando usa o parâmetro ConfigurationName para selecionar a configuração WithProfile no computador Server01.

PS C:> New-PSSession -ComputerName Server01 -ConfigurationName WithProfile

Este comando terá êxito somente se o usuário atual tiver permissão para usar a configuração de sessão WithProfile ou puder fornecer as credenciais de um usuário que tenha as permissões necessárias.

Você também pode usar a variável de preferência $PSSessionConfigurationName para alterar a configuração de sessão padrão no computador. Para obter mais informações sobre a variável de preferência $PSSessionConfigurationName, consulte about_Preference_Variables.

PALAVRAS-CHAVE

about_Endpoints about_SessionConfigurations

Consulte também