Acerca de los archivos de configuración de sesiónAbout Session Configuration Files

DESCRIPCIÓN BREVESHORT DESCRIPTION

Describe los archivos de configuración de sesión, que se usan en una configuración de sesión (también conocida como "punto de conexión") para definir el entorno de las sesiones que usan la configuración de sesión.Describes session configuration files, which are used in a session configuration (also known as an "endpoint") to define the environment of sessions that use the session configuration.

DESCRIPCIÓN LARGALONG DESCRIPTION

Un "archivo de configuración de sesión" es un archivo de texto con una extensión de nombre de archivo. PSSC que contiene una tabla hash de propiedades y valores de configuración de sesión.A "session configuration file" is a text file with a .pssc file name extension that contains a hash table of session configuration properties and values. Puede usar un archivo de configuración de sesión para establecer las propiedades de una configuración de sesión.You can use a session configuration file to set the properties of a session configuration. Al hacerlo, se define el entorno de cualquier sesión de PowerShell que use esa configuración de sesión.Doing so defines the environment of any PowerShell sessions that use that session configuration.

Los archivos de configuración de sesión facilitan la creación de configuraciones de sesión personalizadas sin usar scripts o ensamblados de C# complejos.Session configuration files make it easy to create custom session configurations without using complex C# assemblies or scripts.

Una "configuración de sesión" o "punto de conexión" es una colección de opciones de configuración del equipo local que determinan aspectos como los que los usuarios pueden crear sesiones en el equipo. qué comandos pueden ejecutar los usuarios en esas sesiones; y si la sesión se debe ejecutar como una cuenta virtual con privilegios.A "session configuration" or "endpoint" is a collection of local computer settings that determine such things as which users can create sessions on the computer; which commands users can run in those sessions; and whether the session should run as a privileged virtual account. Para obtener más información sobre las configuraciones de sesión, vea about_Session_Configurations.For more information about session configurations, see about_Session_Configurations.

Las configuraciones de sesión se introdujeron en Windows PowerShell 2,0 y los archivos de configuración de sesión se introdujeron en Windows PowerShell 3,0.Session configurations were introduced in Windows PowerShell 2.0, and session configuration files were introduced in Windows PowerShell 3.0. Debe usar Windows PowerShell 3,0 para incluir un archivo de configuración de sesión en una configuración de sesión.You must use Windows PowerShell 3.0 to include a session configuration file in a session configuration. Sin embargo, los usuarios de Windows PowerShell 2,0 (y versiones posteriores) se ven afectados por la configuración de la sesión.However, users of Windows PowerShell 2.0 (and later) are affected by the settings in the session configuration.

Crear sesiones personalizadasCreating Custom Sessions

Puede personalizar muchas características de una sesión de PowerShell especificando las propiedades de la sesión en una configuración de sesión.You can customize many features of a PowerShell session by specifying session properties in a session configuration. Puede personalizar una sesión escribiendo un programa de C# que defina un espacio de ejecución personalizado o puede usar un archivo de configuración de sesión para definir las propiedades de las sesiones creadas con la configuración de sesión.You can customize a session by writing a C# program that defines a custom runspace, or you can use a session configuration file to define the properties of sessions created by using the session configuration. Como norma general, es más fácil utilizar el archivo de configuración de sesión que escribir un programa de C#.As a general rule, it is easier to use the session configuration file than to write a C# program.

Puede usar un archivo de configuración de sesión para crear elementos como sesiones totalmente funcionales para usuarios de plena confianza; sesiones bloqueadas que permiten el acceso mínimo; sesiones diseñadas para determinados y que contienen solo los módulos necesarios para esas tareas; y las sesiones en las que los usuarios sin privilegios solo pueden ejecutar comandos específicos como una cuenta con privilegios.You can use a session configuration file to create items such as fully-functioning sessions for highly trusted users; locked-down sessions that allow minimal access; sessions designed for particular and that contain only the modules required for those tasks; and sessions where unprivileged users can only run specific commands as a privileged account.

Además, puede administrar si los usuarios de la sesión pueden utilizar elementos del lenguaje de PowerShell, como bloques de scripts, o si solo pueden ejecutar comandos.In addition to that, you can manage whether users of the session can use PowerShell language elements such as script blocks, or whether they can only run commands. Puede administrar la versión de los usuarios de PowerShell que se pueden ejecutar en la sesión. administrar los módulos que se importan en la sesión; y administran los cmdlets, las funciones y los alias que pueden ejecutar los usuarios de sesión.You can manage the version of PowerShell users can run in the session; manage which modules are imported into the session; and manage which cmdlets, functions, and aliases session users can run. Al usar el campo RoleDefinitions, puede proporcionar a los usuarios capacidades diferentes en la sesión en función de la pertenencia a grupos.When using the RoleDefinitions field, you can give users different capabilities in the session based on group membership.

Para obtener más información sobre RoleDefinitions y cómo definir este valor, vea el tema de ayuda del cmdlet New-PSRoleCapabilityFile.For more information about RoleDefinitions and how to define this Value, see the help topic for the New-PSRoleCapabilityFile Cmdlet.

Crear un archivo de configuración de sesiónCreating a Session Configuration File

La forma más fácil de crear un archivo de configuración de sesión es mediante el cmdlet New-PSSessionConfigurationFile.The easiest way to create a session configuration file is by using the New-PSSessionConfigurationFile cmdlet. Este cmdlet genera un archivo que usa la sintaxis y el formato correctos, y que comprueba automáticamente muchos de los valores de propiedad del archivo de configuración.This cmdlet generates a file that uses the correct syntax and format, and that automatically verifies many of the configuration file property values.

Para obtener descripciones detalladas de las propiedades que se pueden establecer en un archivo de configuración de sesión, vea el tema de ayuda del cmdlet New-PSSessionConfigurationFile.For detailed descriptions of the properties that you can set in a session configuration file, see the help topic for the New-PSSessionConfigurationFile cmdlet.

El siguiente comando crea un archivo de configuración de sesión que usa los valores predeterminados.The following command creates a session configuration file that uses the default values. El archivo de configuración resultante usa solo los valores predeterminados, ya que no se incluyen parámetros distintos del parámetro Path (que especifica la ruta de acceso de archivo):The resulting configuration file uses only the default values because no parameters other than the Path parameter (which specifies the file path) are included:

New-PSSessionConfigurationFile -Path .\Defaults.pssc

Para ver el nuevo archivo de configuración en el editor de texto predeterminado, use el siguiente comando:To view the new configuration file in your default text editor, use the following command:

Invoke-Item -Path .\Defaults.pssc

Para crear una configuración de sesión para las sesiones en las que el usuario puede ejecutar comandos, pero no usar otros elementos del lenguaje de PowerShell, escriba:To create a session configuration for sessions in which user can run commands, but not use other elements of the PowerShell language, type:

New-PSSessionConfigurationFile -LanguageMode NoLanguage
-Path .\NoLanguage.pssc

En el comando anterior, el establecimiento del parámetro LanguageMode en nolanguage impide que los usuarios realicen acciones como escribir o ejecutar scripts o usar variables.In the preceding command, setting the LanguageMode parameter to NoLanguage prevents users from doing such things as writing or running scripts, or using variables.

Para crear una configuración de sesión para las sesiones en las que los usuarios solo pueden usar cmdlets get, escriba:To create a session configuration for sessions in which users can use only Get cmdlets, type:

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

En el ejemplo anterior, el establecimiento del parámetro VisibleCmdlets en Get-* limita a los usuarios a los cmdlets que tienen nombres que empiezan por el valor de cadena "Get-".In the preceding example, setting the VisibleCmdlets parameter to Get-* limits users to cmdlets that have names that start with the string value "Get-".

Para crear una configuración de sesión para las sesiones que se ejecutan bajo una cuenta virtual con privilegios en lugar de las credenciales del usuario, escriba:To create a session configuration for sessions that run under a privileged virtual account instead of the user's credentials, type:

New-PSSessionConfigurationFile -RunAsVirtualAccount
-Path .\VirtualAccount.pssc

Para crear una configuración de sesión para las sesiones en las que los comandos visibles para el usuario se especifican en un archivo de funcionalidad de rol, escriba:To create a session configuration for sessions in which the commands visible to the user are specified in a role capabilities file, type:

New-PSSessionConfigurationFile -RoleDefinitions
@{ 'CONTOSO\User' = @{ RoleCapabilities = 'Maintenance' }}
-Path .\Maintenance.pssc

Usar un archivo de configuración de sesiónUsing a Session Configuration File

Puede incluir un archivo de configuración de sesión cuando cree una configuración de sesión o agregue un archivo a la configuración de sesión en un momento posterior.You can include a session configuration file when you create a session configuration or add you can add a file to the session configuration at a later time.

Para incluir un archivo de configuración de sesión al crear una configuración de sesión, use el parámetro Path del cmdlet Register-PSSessionConfiguration.To include a session configuration file when creating a session configuration, use the Path parameter of the Register-PSSessionConfiguration cmdlet.

Por ejemplo, el siguiente comando usa el archivo nolanguage. PSSC cuando crea una configuración de sesión nolanguage.For example, the following command uses the NoLanguage.pssc file when it creates a NoLanguage session configuration.

Register-PSSessionConfiguration -Name NoLanguage
-Path .\NoLanguage.pssc

Cuando se inicia una nueva sesión nolanguage, los usuarios solo tendrán acceso a los comandos de PowerShell.When a new NoLanguage session starts, users will only have access to PowerShell commands.

Para agregar un archivo de configuración de sesión a una configuración de sesión existente, use el cmdlet Set-PSSessionConfiguration y el parámetro Path.To add a session configuration file to an existing session configuration, use the Set-PSSessionConfiguration cmdlet and the Path parameter. Esto afecta a las nuevas sesiones creadas con la configuración de sesión especificada.This affects any new sessions created with the specified session configuration. Tenga en cuenta que el cmdlet Set-PSSessionConfiguration cambia la sesión en sí y no modifica el archivo de configuración de sesión.Note that the Set-PSSessionConfiguration cmdlet changes the session itself and does not modify the session configuration file.

Por ejemplo, el comando siguiente agrega el archivo nolanguage. PSSC a la configuración de sesión LockedDown.For example, the following command adds the NoLanguage.pssc file to the LockedDown session configuration.

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

Cuando los usuarios usan la configuración de sesión de LockedDown para crear una sesión, podrán ejecutar cmdlets, pero no podrán crear o usar variables, asignar valores ni usar otros elementos del lenguaje de PowerShell.When users use the LockedDown session configuration to create a session, they will be able to run cmdlets but they will not be able to create or use variables, assign values, or use other PowerShell language elements.

El siguiente comando usa el cmdlet New-PSSession para crear una sesión en el equipo Srv01 que usa la configuración de sesión LockedDown, guardando una referencia de objeto a la sesión en la variable $s.The following command uses the New-PSSession cmdlet to create a session on the computer Srv01 that uses the LockedDown session configuration, saving an object reference to the session in the $s variable. La ACL (lista de control de acceso) de la configuración de sesión determina quién puede usarla para crear una sesión.The ACL (access control list) of the session configuration determines who can use it to create a session.

$s = New-PSSession -ComputerName Srv01
-ConfigurationName LockedDown

Como las restricciones nolanguage se agregaron a la configuración de sesión LockedDown, los usuarios de las sesiones de LockedDown solo podrán ejecutar comandos y cmdlets de PowerShell.Because the NoLanguage constraints were added to the LockedDown session configuration, users in LockedDown sessions will only be able to run PowerShell commands and cmdlets. Por ejemplo, los dos comandos siguientes usan el cmdlet Invoke-Command para ejecutar comandos en la sesión a la que se hace referencia en la variable $s.For example, the following two commands use the Invoke-Command cmdlet to run commands in the session referenced in the $s variable. El primer comando, que ejecuta el cmdlet Get-UICulture y no usa ninguna variable, se realiza correctamente.The first command, which runs the Get-UICulture cmdlet and does not use any variables, succeeds. El segundo comando, que obtiene el valor de la variable $PSUICulture, produce un error.The second command, which gets the value of the $PSUICulture variable, fails.

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

Edición de un archivo de configuración de sesiónEditing a Session Configuration File

Toda la configuración de una configuración de sesión excepto RunAsVirtualAccount y RunAsVirtualAccountGroups se puede modificar editando el archivo de configuración de sesión que usa la configuración de sesión.All settings in a session configuration except for RunAsVirtualAccount and RunAsVirtualAccountGroups can be modified by editing the session configuration file used by the session configuration. Para ello, empiece por buscar la copia activa del archivo de configuración de sesión.To do this, begin by locating the active copy of the session configuration file.

Cuando se usa un archivo de configuración de sesión en una configuración de sesión, PowerShell crea una copia activa del archivo de configuración de sesión y lo almacena en el $ \ directorio pshome SessionConfig del equipo local.When you use a session configuration file in a session configuration, PowerShell creates an active copy of the session configuration file and stores it in the $pshome\SessionConfig directory on the local computer.

La ubicación de la copia activa de un archivo de configuración de sesión se almacena en la propiedad ConfigFilePath del objeto de configuración de sesión.The location of the active copy of a session configuration file is stored in the ConfigFilePath property of the session configuration object.

El comando siguiente obtiene la ubicación del archivo de configuración de sesión para la configuración de sesión nolanguage.The following command gets the location of the session configuration file for the NoLanguage session configuration.

(Get-PSSessionConfiguration -Name NoLanguage).ConfigFilePath

Este comando devuelve una ruta de acceso de archivo similar a la siguiente:That command returns a file path similar to the following:

C:\WINDOWS\System32\WindowsPowerShell\v1.0\SessionConfig\
NoLanguage_0c115179-ff2a-4f66-a5eb-e56e5692ba22.pssc

Puede editar el archivo. PSSC en cualquier editor de texto.You can edit the .pssc file in any text editor. Una vez guardado el archivo, se utilizará en todas las sesiones nuevas que usen la configuración de sesión.After the file is saved it will be employed by any new sessions that use the session configuration.

Si necesita modificar la configuración de RunAsVirtualAccount o RunAsVirtualAccountGroups, debe anular el registro de la configuración de sesión y volver a registrar un archivo de configuración de sesión que incluya los valores editados.If you need to modify the RunAsVirtualAccount or the RunAsVirtualAccountGroups settings, you must un-register the session configuration and re-register a session configuration file that includes the edited values.

Probar un archivo de configuración de sesiónTesting a Session Configuration File

Use el cmdlet Test-PSSessionConfigurationFile para probar los archivos de configuración de sesión editados manualmente.Use the Test-PSSessionConfigurationFile cmdlet to test manually edited session configuration files. Eso es importante: Si la sintaxis y los valores del archivo no son válidos, los usuarios no podrán usar la configuración de sesión para crear una sesión.That's important: if the file syntax and values are not valid users will not be able to use the session configuration to create a session.

Por ejemplo, el siguiente comando comprueba el archivo de configuración de sesión activo de la configuración de sesión nolanguage.For example, the following command tests the active session configuration file of the NoLanguage session configuration.

Test-PSSessionConfigurationFile -Path C:\WINDOWS\System32\
WindowsPowerShell\v1.0\SessionConfig\
NoLanguage_0c115179-ff2a-4f66-a5eb-e56e5692ba22.pssc

Si la sintaxis y los valores del archivo de configuración son válidos Test-PSSessionConfigurationFile devuelve true.If the syntax and values in the configuration file are valid Test-PSSessionConfigurationFile returns True. Si la sintaxis y los valores no son válidos, el cmdlet devuelve false.If the syntax and values are not valid then the cmdlet returns False.

Puede usar Test-PSSessionConfigurationFile para probar cualquier archivo de configuración de sesión, incluidos los archivos que crea el cmdlet New-PSSessionConfiguration.You can use Test-PSSessionConfigurationFile to test any session configuration file, including files that the New-PSSessionConfiguration cmdlet creates. Para obtener más información, vea el tema de ayuda del cmdlet Test-PSSessionConfigurationFile.For more information, see the help topic for the Test-PSSessionConfigurationFile cmdlet.

Quitar un archivo de configuración de sesiónRemoving a Session Configuration File

No se puede quitar un archivo de configuración de sesión de una configuración de sesión.You cannot remove a session configuration file from a session configuration. Sin embargo, puede reemplazar el archivo por un nuevo archivo que utilice la configuración predeterminada.However, you can replace the file with a new file that uses the default settings. Esto cancela eficazmente la configuración utilizada por el archivo de configuración original.This effectively cancels the settings used by the original configuration file.

Para reemplazar un archivo de configuración de sesión, cree un nuevo archivo de configuración de sesión que utilice la configuración predeterminada y, a continuación, use el cmdlet Set-PSSessionConfiguration para reemplazar el archivo de configuración de sesión personalizado por el nuevo archivo.To replace a session configuration file, create a new session configuration file that uses the default settings, then use the Set-PSSessionConfiguration cmdlet to replace the custom session configuration file with the new file.

Por ejemplo, los siguientes comandos crean un archivo de configuración de sesión predeterminado y, a continuación, reemplazan el archivo de configuración de sesión activo en la configuración de sesión nolanguage.For example, the following commands create a Default session configuration file and then replace the active session configuration file in the NoLanguage session configuration.

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

Cuando estos comandos finalicen, la configuración de sesión nolanguage proporcionará compatibilidad completa con el lenguaje (la configuración predeterminada) para todas las sesiones creadas con esa configuración de sesión.When these commands finish, the NoLanguage session configuration will actually provide full language support (the default setting) for all sessions created with that session configuration.

Ver las propiedades de una configuración de sesión los objetos de configuración de sesión que representan configuraciones de sesión mediante archivos de configuración de sesión tienen propiedades adicionales que facilitan la detección y el análisis de la configuración de sesión.Viewing the Properties of a Session Configuration The session configuration objects that represent session configurations using session configuration files have additional properties that make it easy to discover and analyze the session configuration. (Tenga en cuenta que el nombre de tipo que se muestra a continuación incluye una definición de vista con formato). Puede ver las propiedades ejecutando el cmdlet Get-PSSessionConfiguration y canalizando los datos devueltos al cmdlet Get-Member:(Note that the type name shown below includes a formatted view definition.) You can view the properties by running the Get-PSSessionConfiguration cmdlet and piping the returned data to the Get-Member cmdlet:

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...

Estas propiedades facilitan la búsqueda de configuraciones de sesión específicas.These properties make it easy to search for specific session configurations. Por ejemplo, puede usar la propiedad ExecutionPolicy para buscar una configuración de sesión que admita sesiones con la Directiva de ejecución RemoteSigned.For example, you can use the ExecutionPolicy property to find a session configuration that supports sessions with the RemoteSigned execution policy. Tenga en cuenta que, dado que la propiedad ExecutionPolicy solo existe en las sesiones que usan archivos de configuración de sesión, es posible que el comando no devuelva todas las configuraciones de sesión aptas.Note that, because the ExecutionPolicy property exists only on sessions that use session configuration files, the command might not return all qualifying session configurations.

Get-PSSessionConfiguration |
where {$_.ExecutionPolicy -eq "RemoteSigned"}

El siguiente comando obtiene las configuraciones de sesión en las que el Como_usuario es el administrador de Exchange.The following command gets session configurations in which the RunAsUser is the Exchange administrator.

 Get-PSSessionConfiguration |
where {$_.RunAsUser -eq "Exchange01\Admin01"}

Para ver información acerca de las definiciones de roles asociadas a una configuración, use el cmdlet Get-PSSessionCapability.To view information about the role definitions associated with a configuration use the Get-PSSessionCapability cmdlet. Este cmdlet le permite determinar los comandos y el entorno disponibles para usuarios específicos en puntos de conexión concretos.This cmdlet enables you to determine the commands and environment available to specific users in specific endpoints.

NOTASNOTES

Las configuraciones de sesión también admiten un tipo de sesión conocido como sesión "vacía".Session configurations also support a type of session known as an "empty" session. Un tipo de sesión vacío le permite crear sesiones personalizadas con comandos seleccionados.An Empty session type enables you to create custom sessions with selected commands. Si no agrega módulos, funciones o scripts a una sesión vacía, la sesión se limita a las expresiones y puede que no sea de ningún uso práctico.If you do not add modules, functions, or scripts to an empty session, the session is limited to expressions and might not be of any practical use. La propiedad SessionType indica si está trabajando con una sesión vacía o no.The SessionType property tells you whether or not you are working with an empty session.

CONSULTE TAMBIÉNSEE ALSO

about_Session_Configurationsabout_Session_Configurations

New-PSSessionNew-PSSession

Disable-PSSessionConfigurationDisable-PSSessionConfiguration

Enable-PSSessionConfigurationEnable-PSSessionConfiguration

Get-PSSessionConfigurationGet-PSSessionConfiguration

New-PSSessionConfigurationFileNew-PSSessionConfigurationFile

Register-PSSessionConfigurationRegister-PSSessionConfiguration

Set-PSSessionConfigurationSet-PSSessionConfiguration

Test-PSSessionConfigurationFileTest-PSSessionConfigurationFile

Unregister-PSSessionConfigurationUnregister-PSSessionConfiguration

Get-PSSessionCapabilityGet-PSSessionCapability

New-PSRoleCapabilityFileNew-PSRoleCapabilityFile