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