about_Session_Configuration_Files

Se aplica a: Windows PowerShell 3.0

TEMA

about_Session_Configuration_Files

DESCRIPCIÓN BREVE

Describe los archivos de configuración de sesión, que se pueden usar en una configuración de sesión ("extremo") para definir el entorno de las sesiones que usan la configuración de sesión.

DESCRIPCIÓN LARGA

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 valores y propiedades de configuración de sesión. Puede usar un archivo de configuración de sesión para establecer las propiedades de una configuración de sesión y, por lo tanto, para definir el entorno de las sesiones de Windows PowerShell® que usan la configuración de sesión.

Los archivos de configuración de sesión facilitan el diseño de configuraciones de sesión personalizadas sin ensamblados o scripts de C# complejos.

Una "configuración de sesión" o "extremo" es una colección de valores del equipo local que determinan los usuarios que pueden crear sesiones en el equipo y los comandos que pueden ejecutar en las sesiones. Para más información sobre las configuraciones de sesión, vea la página about_Session_Configurations (https://go.microsoft.com/fwlink/?LinkID=145152).

Las configuraciones de sesión se introdujeron en Windows PowerShell 2.0. Los archivos de configuración de sesión se introdujeron en 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, pero los usuarios de Windows PowerShell 2.0 y versiones posteriores se ven afectados por todos los valores de la configuración de sesión.

CREAR SESIONES PERSONALIZADAS

Puede personalizar muchas características de una sesión de Windows PowerShell especificando las propiedades de la sesión en una configuración de sesión. Puede personalizar una sesión escribiendo un programa de C# que defina un espacio de ejecución personalizado o bien puede usar un archivo de configuración de sesión para definir las propiedades de las sesiones creadas mediante la configuración de sesión.

Puede usar un archivo de configuración de sesión para crear sesiones completamente funcionales para usuarios de plena confianza, sesiones bloqueadas para un acceso mínimo y sesiones diseñadas para tareas específicas que solo contienen los módulos necesarios para la tarea.

Por ejemplo, puede determinar si los usuarios de la sesión pueden usar elementos de lenguaje de Windows PowerShell (como bloques de script) o si solo pueden ejecutar comandos. Puede determinar la versión de Windows PowerShell que se puede ejecutar en la sesión, los módulos que se importan en la sesión y los cmdlets, las funciones y los alias que pueden ejecutar los usuarios de la sesión.

CREAR UN ARCHIVO DE CONFIGURACIÓN DE SESIÓN

La manera más fácil de crear un archivo de configuración de sesión es con el cmdlet New-PSSessionConfiguration. Este cmdlet genera un archivo con la sintaxis y el formato correctos, y verifica muchos de los valores de propiedad.

Para obtener descripciones detalladas de las propiedades que puede establecer en un archivo de configuración de sesión, consulte el tema de ayuda del cmdlet New-PSSessionConfigurationFile.

Para crear un archivo de configuración de sesión con los valores predeterminados, use el siguiente comando: Insertar aquí cuerpo de sección.

        PS C:\> New-PSSessionConfigurationFile -Path .\Defaults.pssc

Use el siguiente comando para abrir y ver el archivo en el editor de texto predeterminado:

        PS C:\> Invoke-Item -Path .\Defaults.pssc

Para crear una configuración de sesión para las sesiones en las que el usuario pueda ejecutar comandos (pero no usar otros elementos del lenguaje de Windows PowerShell), escriba:

        PS C:\> New-PSSessionConfigurationFile -LanguageMode NoLanguage -Path .\NoLanguage.pssc

Para crear una configuración de sesión para las sesiones en las que los usuarios solo puedan usar los cmdlets Get, escriba:

        PS C:\> New-PSSessionConfigurationFile -VisibleCmdlets Get-* -Path .\GetSessions.pssc

USAR UN ARCHIVO DE CONFIGURACIÓN DE SESIÓN

Puede incluir un archivo de configuración de sesión al crear una configuración de sesión o al agregarlo más tarde a la configuración de sesión.

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.

El siguiente comando incluye el archivo NoLanguage.pssc cuando crea la configuración de sesión NoLanguage.

      PS C:\> Register-PSSessionConfiguration -Name NoLanguage -Path .\NoLanguage.pssc

Para agregar un archivo de configuración de sesión a una configuración de sesión existente, use el parámetro Path del cmdlet Set-PSSessionConfiguration. El cambio afecta a todas las sesiones nuevas creadas con la configuración de sesión una vez completado el comando.

El siguiente comando agrega el archivo NoLanguage.pssc a la configuración de sesión LockedDown.

      PS C:\> Set-PSSessionConfiguration -Name LockedDown -Path .\NoLanguage.pssc

Cuando los usuarios usan la configuración de sesión LockedDown para crear una sesión, pueden ejecutar cmdlets, pero no pueden crear o usar variables, asignar valores ni usar otros elementos de lenguaje de Windows PowerShell.

Por ejemplo, el siguiente comando usa el cmdlet New-PSSession para crear una sesión en el equipo local que usa la configuración de sesión LockedDown. El comando guarda la sesión en la variable $s. La ACL de la configuración de sesión determina quién puede usarla para crear una sesión.

      PS C:\> $s = New-PSSession -ComputerName Srv01 -ConfigurationName LockedDown

El siguiente comando usa el cmdlet Invoke-Command para ejecutar comandos en la sesión en la variable $s. El primer comando, que ejecuta el cmdlet Get-UICulture, es correcto. Sin embargo, en el segundo comando, que obtiene el valor de la variable $PSUICulture, se produce un error.

      PS C:\> Invoke-Command -Session $s {Get-UICulture}
      en-US

      PS C:\> 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

EDITAR UN ARCHIVO DE CONFIGURACIÓN DE SESIÓN

Para editar el archivo de configuración de sesión que está usando una configuración de sesión, empiece por buscar la copia activa del archivo de configuración de sesión.

Al usar un archivo de configuración de sesión en una configuración de sesión, Windows PowerShell crea una copia activa del archivo de configuración de sesión y la almacena en el directorio $pshome\SessionConfig del equipo local.

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.

El siguiente comando obtiene la ubicación del archivo de configuración de sesión para la configuración de sesión NoLanguage.

      PS C:\> (Get-PSSessionConfiguration -Name NoLanguage).ConfigFilePath
      C:\WINDOWS\System32\WindowsPowerShell\v1.0\SessionConfig\NoLanguage_0c115179-ff2a-4f66-a5eb-e56e5692ba22.pssc

Puede editar el archivo en cualquier editor de texto. El archivo se cambia al guardarlo y se aplica a las nuevas sesiones que usan la configuración de sesión.

PROBAR UN ARCHIVO DE CONFIGURACIÓN DE SESIÓN

Asegúrese de probar todos los archivos de configuración de sesión editados manualmente. Si la sintaxis y los valores de los archivos no son válidos, los usuarios no podrán usar la configuración de sesión para crear una sesión.

Por ejemplo, el siguiente comando comprueba el archivo de configuración de la sesión activa de la configuración de sesión NoLanguage.

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

Puede usar Test-PSSessionConfigurationFile para probar cualquier archivo de configuración de sesión, incluidos los archivos que crea New-PSSessionConfiguration. Para más información, consulte el tema de ayuda del cmdlet Test-PSSessionConfigurationFile.

QUITAR UN ARCHIVO DE CONFIGURACIÓN DE SESIÓN

No puede quitar con seguridad un archivo de configuración de sesión desde una configuración de sesión, pero puede reemplazar el archivo por uno que no tenga ningún efecto. Insertar aquí cuerpo de sección.

Para quitar un archivo de configuración de sesión, cree un archivo de configuración de sesión con los valores predeterminados y use el cmdlet Set-PSSessionConfiguration para reemplazar el archivo de configuración de sesión personalizado por una versión predeterminada.

Por ejemplo, el siguiente comando crea un archivo de configuración de sesión Default y reemplaza el archivo de configuración de la sesión activa en la configuración de sesión NoLanguage.

     PS C:\> New-PSSessionConfigurationFile -Path .\Default.pssc
     PS C:\> Set-PSSessionConfiguration -Name NoLanguage -Path .\Default.pssc

Como resultado de este comando, la configuración de sesión NoLanguage ahora proporciona una compatibilidad de lenguaje completa (valor predeterminado) en todas las sesiones creadas con la configuración de sesión.

VER LAS PROPIEDADES DE UNA CONFIGURACIÓN DE SESIÓN

Los objetos de configuración de sesión que representan las configuraciones de sesión que usan 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 (tenga en cuenta que el nombre del tipo incluye una definición de vista con formato).

      PS C:\> Get-PSSessionConfiguration NoLanguage | Get-Member

        TypeName: Microsoft.PowerShell.Commands.PSSessionConfigurationCommands#PSSessionConfiguration

      Name                          MemberType     Definition
      ----                          ----------     ----------
      Equals                        Method         bool Equals(System.Object obj)
      GetHashCode                   Method         int GetHashCode()
      GetType                       Method         type GetType()
      ToString                      Method         string ToString()
      Architecture                  NoteProperty   System.String Architecture=64
      Author                        NoteProperty   System.String Author=juneb
      AutoRestart                   NoteProperty   System.String AutoRestart=fals
      Capability                    NoteProperty   System.Object[] Capability=Sys
      CompanyName                   NoteProperty   System.String CompanyName=Unkn
      configfilepath                NoteProperty   System.String configfilepath=C
      Copyright                     NoteProperty   System.String Copyright=(c) 20
      Enabled                       NoteProperty   System.String Enabled=True
      ExactMatch                    NoteProperty   System.String ExactMatch=true
      ExecutionPolicy               NoteProperty   System.String ExecutionPolicy=
      Filename                      NoteProperty   System.String Filename=%windir
      GUID                          NoteProperty   System.String GUID=0c115179-ff
      ProcessIdleTimeoutSec         NoteProperty   System.String ProcessIdleTimeo
      IdleTimeoutms                 NoteProperty   System.String IdleTimeoutms=72
      lang                          NoteProperty   System.String lang=en-US
      LanguageMode                  NoteProperty   System.String LanguageMode=NoL
      MaxConcurrentCommandsPerShell NoteProperty   System.String MaxConcurrentCom
      MaxConcurrentUsers            NoteProperty   System.String MaxConcurrentUse
      MaxIdleTimeoutms              NoteProperty   System.String MaxIdleTimeoutms
      MaxMemoryPerShellMB           NoteProperty   System.String MaxMemoryPerShel
      MaxProcessesPerShell          NoteProperty   System.String MaxProcessesPerS
      MaxShells                     NoteProperty   System.String MaxShells=300
      MaxShellsPerUser              NoteProperty   System.String MaxShellsPerUser
      Name                          NoteProperty   System.String Name=NoLanguage
      PSVersion                     NoteProperty   System.String PSVersion=3.0
      ResourceUri                   NoteProperty   System.String ResourceUri=http
      RunAsPassword                 NoteProperty   System.String RunAsPassword=
      RunAsUser                     NoteProperty   System.String RunAsUser=
      SchemaVersion                 NoteProperty   System.String SchemaVersion=1.
      SDKVersion                    NoteProperty   System.String SDKVersion=1
      OutputBufferingMode           NoteProperty   System.String OutputBufferingM
      SessionType                   NoteProperty   System.String SessionType=Defa
      UseSharedProcess              NoteProperty   System.String UseSharedProcess
      SupportsOptions               NoteProperty   System.String SupportsOptions=
      xmlns                         NoteProperty   System.String xmlns=http://sch
      XmlRenderingType              NoteProperty   System.String XmlRenderingType
      Permission                    ScriptProperty System.Object Permission {get=

Las nuevas propiedades facilitan la búsqueda de configuraciones de sesión. Por ejemplo, puede usar la propiedad ExecutionPolicy para buscar una configuración de sesión que admita las sesiones con la directiva de ejecución RemoteSigned. Dado que la propiedad ExecutionPolicy solo existe en las sesiones que usan archivos de configuración de sesión, el comando podría no obtener todas las configuraciones de sesión necesarias.

      PS C:\> Get-PSSessionConfiguration | where {$_.ExecutionPolicy -eq "RemoteSigned"}

El siguiente comando obtiene las configuraciones de sesión en que RunAsUser es el administrador de Exchange.

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

NOTAS

Los tipos de sesión vacía están diseñados para que pueda crear sesiones personalizadas con los comandos seleccionados. Si no agrega módulos, funciones o scripts a una sesión vacía, la sesión se limita a las expresiones y podría ser inservible.

VEA TAMBIÉN

about_Session_Configurations

New-PSSession

Disable-PSSessionConfiguration

Enable-PSSessionConfiguration

Get-PSSessionConfiguration

New-PSSessionConfigurationFile

Register-PSSessionConfiguration

Set-PSSessionConfiguration

Test-PSSessionConfigurationFile

Unregister-PSSessionConfiguration