about_Session_Configurations

Descripción breve

Describe las configuraciones de sesión, que determinan los usuarios que pueden conectarse remotamente al equipo y los comandos que pueden ejecutar.

Descripción larga

Una configuración de sesión, también conocida como "punto de conexión" es un grupo de configuraciones en el equipo local que define el entorno para las sesiones de PowerShell que se crean cuando los usuarios remotos o locales se conectan a PowerShell en el equipo local.

Administración istrators del equipo pueden usar configuraciones de sesión para proteger el equipo y definir entornos personalizados para los usuarios que se conectan al equipo.

Administración istrators también pueden usar configuraciones de sesión para determinar los permisos necesarios para conectarse al equipo de forma remota. De forma predeterminada, solo los miembros del grupo Administración istrators tienen permiso para usar la configuración de sesión para conectarse de forma remota, pero puede cambiar la configuración predeterminada para permitir que todos los usuarios o usuarios seleccionados se conecten de forma remota al equipo.

A partir de PowerShell 3.0, puede usar un archivo de configuración de sesión para definir los elementos de una configuración de sesión. Esta característica facilita la personalización de sesiones sin escribir código y detectar las propiedades de una configuración de sesión. Para crear un archivo de configuración de sesión, use el cmdlet New-PSSessionConfiguration. Para obtener más información sobre los archivos de configuración de sesión, consulte about_Session_Configuration_Files.

Las configuraciones de sesión son una característica de la comunicación remota de PowerShell basada en WSMAN. Solo se usan cuando se usan los New-PSSessioncmdlets , Invoke-Commando Enter-PSSession para conectarse a un equipo Windows remoto.

Para administrar las configuraciones de sesión en un equipo Windows, inicie PowerShell con la opción Ejecutar como administrador .

Acerca de las configuraciones de sesión

Cada sesión de PowerShell usa una configuración de sesión. Esto incluye sesiones persistentes que se crean mediante los cmdlets New-PSSession o Enter-PSSession, y las sesiones temporales que PowerShell crea al usar el parámetro ComputerName de un cmdlet que usa la tecnología de comunicación remota basada en WS-Management, como Invoke-Command.

Administración istrators pueden usar configuraciones de sesión para proteger los recursos del equipo y crear entornos personalizados para los usuarios que se conectan al equipo. Por ejemplo, puede usar una configuración de sesión para limitar el tamaño de los objetos que recibe el equipo en la sesión, definir el modo de idioma de la sesión y especificar los cmdlets, proveedores y funciones que están disponibles en la sesión.

Al configurar el descriptor de seguridad de una configuración de sesión, se determina quién puede usar la configuración de sesión para conectarse al equipo. Los usuarios deben tener permiso Execute para una configuración de sesión para usarla en una sesión. Si un usuario no tiene los permisos necesarios para usar ninguna de las configuraciones de sesión en un equipo, el usuario no puede conectarse al equipo de forma remota.

De forma predeterminada, solo Administración istrators del equipo tienen permiso para usar las configuraciones de sesión predeterminadas. Sin embargo, puede cambiar los descriptores de seguridad para permitir que todos los usuarios, nadie o solo los usuarios seleccionados usen las configuraciones de sesión en el equipo.

Configuraciones de sesión integradas

PowerShell 3.0 incluye configuraciones de sesión integradas denominadas Microsoft.PowerShell y Microsoft.PowerShell.Workflow. En equipos que ejecutan versiones de 64 bits de Windows, PowerShell también proporciona Microsoft.PowerShell32, una configuración de sesión de 32 bits.

La configuración de sesión de Microsoft.PowerShell se usa para las sesiones de forma predeterminada, es decir, cuando un comando para crear una sesión no incluye el parámetro ConfigurationName del cmdlet New-PSSession, Enter-PSSession o Invoke-Command.

Los descriptores de seguridad de las configuraciones de sesión predeterminadas solo permiten que los miembros del grupo Administración istrators del equipo local los usen. Por lo tanto, solo los miembros del grupo Administración istrators pueden conectarse al equipo de forma remota a menos que cambie la configuración predeterminada.

Puede cambiar las configuraciones de sesión predeterminadas mediante la variable de preferencia $PSSessionConfigurationName. Para obtener más información, consulte about_Preference_Variables.

Visualización de configuraciones de sesión en el equipo local

Para obtener las configuraciones de sesión en el equipo local, use el cmdlet Get-PSSessionConfiguration.

Por ejemplo, escriba:

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

El objeto de configuración de sesión se expande en PowerShell 3.0 para mostrar las propiedades de la configuración de sesión configuradas mediante un archivo de configuración de sesión.

Por ejemplo, para ver todas las propiedades de un objeto de configuración de sesión, escriba:

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

También puede usar el proveedor WSMan en PowerShell para ver las configuraciones de sesión. El proveedor WSMan crea una unidad WSMAN: en la sesión.

En la unidad WSMAN: , las configuraciones de sesión se encuentran en el nodo Complemento. (Todas las configuraciones de sesión están en el nodo Complemento, pero hay elementos en el nodo Complemento que no son configuraciones de sesión).

Por ejemplo, para ver las configuraciones de sesión en el equipo local, escriba:

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

Visualización de configuraciones de sesión en un equipo remoto

Para ver las configuraciones de sesión en un equipo remoto, use el cmdlet Conectar-WSMan para agregar una nota para el equipo remoto a la unidad WSMAN: en el equipo local y, a continuación, use la unidad WSMAN: para ver las configuraciones de sesión.

Por ejemplo, el siguiente comando agrega un nodo para el equipo remoto Server01 a la unidad WSMAN: en el equipo local.

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

Una vez completado el comando, puede ir al nodo del equipo Server01 para ver las configuraciones de sesión.

Por ejemplo:

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

Cambiar el descriptor de seguridad de una configuración de sesión

En Windows Server 2012 y versiones más recientes de Windows Server, las configuraciones de sesión integradas están habilitadas para los usuarios remotos de forma predeterminada. En otras versiones compatibles de Windows, debe cambiar los descriptores de seguridad de las configuraciones de sesión para permitir el acceso remoto.

Para habilitar el acceso remoto a las configuraciones de sesión en el equipo, use el cmdlet Enable-PSRemoting. Este cmdlet crea dos configuraciones de sesión:

  • con el nombre definido como: "PowerShell" + "versión actual de PowerShell"
  • con el nombre "PowerShell.6", sin establecer en ninguna versión específica de PowerShell.

Además, de forma predeterminada, solo los miembros del grupo Administración istrators del equipo tienen permiso Execute para las configuraciones de sesión predeterminadas, pero puede cambiar los descriptores de seguridad en las configuraciones de sesión predeterminadas y en cualquier configuración de sesión que cree.

Para conceder a otros usuarios permiso para conectarse al equipo de forma remota, use el cmdlet Set-PSSessionConfiguration para agregar permisos "Execute" para esos usuarios a los descriptores de seguridad de las configuraciones de sesión Microsoft.PowerShell y Microsoft.PowerShell32.

Por ejemplo, el siguiente comando abre una página de propiedades que le permite cambiar el descriptor de seguridad para la configuración de sesión predeterminada de Microsoft.PowerShell.

Set-PSSessionConfiguration -name Microsoft.PowerShell `
  -ShowSecurityDescriptorUI

Para denegar todos los permisos a todas las configuraciones de sesión del equipo, use el cmdlet Disable-PSSessionConfiguration. Por ejemplo, el siguiente comando deshabilita las configuraciones de sesión predeterminadas en el equipo.

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

Para evitar que los usuarios remotos se conecten al equipo, pero permitir que los usuarios locales se conecten, use el cmdlet Disable-PSRemoting. Disable-PSRemoting agrega una entrada "Network_Deny_All" a todas las configuraciones de sesión del equipo.

PS C:> Disable-PSRemoting

Para permitir que los usuarios remotos usen todas las configuraciones de sesión en el equipo, use el cmdlet Enable-PSRemoting o Enable-PSSessionConfiguration. Por ejemplo, el siguiente comando habilita el acceso remoto a las configuraciones de sesión integradas.

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

Para realizar otros cambios en el descriptor de seguridad de una configuración de sesión, use el cmdlet Set-PSSessionConfiguration. Use el parámetro SecurityDescriptorSDDL para enviar un valor de cadena SDDL. Use el parámetro ShowSecurityDescriptorUI para mostrar una hoja de propiedades de interfaz de usuario que le ayude a crear un SDDL nuevo.

Por ejemplo:

Set-PSSessionConfiguration -Name Microsoft.PowerShell `
  -ShowSecurityDescriptorUI

Creación de una nueva configuración de sesión

Para crear una nueva configuración de sesión en el equipo local, use el cmdlet Register-PSSessionConfiguration. Para definir la nueva configuración de sesión, puede usar un ensamblado de C#, un script de PowerShell y los parámetros del cmdlet Register-PSSessionConfiguration.

Por ejemplo, el siguiente comando crea una configuración de sesión que es idéntica a la configuración de sesión de Microsoft.PowerShell, excepto que limita los datos recibidos de un comando remoto a 20 megabytes (MB). (El valor predeterminado es 50 MB).

Register-PSSessionConfiguration -Name NewConfig `
  -MaximumReceivedDataSizePerCommandMB 20

Al crear una configuración de sesión, puede administrarla mediante los otros cmdlets de configuración de sesión y aparece en la unidad WSMAN: .

Para obtener más información, vea Register-PSSessionConfiguration.

Quitar una configuración de sesión

Para quitar una configuración de sesión del equipo local, use el cmdlet Unregister-PSSessionConfiguration. Por ejemplo, el siguiente comando quita la configuración de sesión NewConfig del equipo.

PS C:> Unregister-PSSessionConfiguration -Name NewConfig

Para obtener más información, consulte Unregister-PSSessionConfiguration.

Restaurar una configuración de sesión

Para restaurar una configuración de sesión predeterminada que se eliminó (sin registrar) accidentalmente, use el cmdlet Enable-PSRemoting.

El cmdlet Enable-PSRemoting vuelve a crear todas las configuraciones de sesiones predeterminadas que no existen en el equipo. No sobrescribe ni cambia los valores de propiedad de las configuraciones de sesión existentes.

Para restaurar los valores de propiedad originales de una configuración de sesión predeterminada, use Unregister-PSSessionConfiguration para eliminar la configuración de sesión y, a continuación, use el cmdlet Enable-PSRemoting para volver a crearlo.

Selección de una configuración de sesión

Para seleccionar una configuración de sesión determinada para una sesión, use el parámetro ConfigurationName de New-PSSession, Enter-PSSession o Invoke-Command.

Por ejemplo, este comando usa el cmdlet New-PSSession para iniciar una PSSession en el equipo Server01. El comando usa el parámetro ConfigurationName para seleccionar la configuración withProfile en el equipo Server01.

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

Este comando solo se realizará correctamente si el usuario actual tiene permiso para usar la configuración de sesión withProfile o puede proporcionar las credenciales de un usuario que tenga los permisos necesarios.

También puede usar la variable de preferencia $PSSessionConfigurationName para cambiar la configuración de sesión predeterminada en el equipo. Para obtener más información sobre la variable de preferencia $PSSessionConfigurationName, consulte about_Preference_Variables.

PALABRAS CLAVE

about_Endpoints about_SessionConfigurations

Consulte también