about_Session_Configuration_Files
DESCRIPCIÓN BREVE
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 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. Al hacerlo, se define el entorno de todas las sesiones de PowerShell que usan esa configuración de sesión.
Los archivos de configuración de sesión hacen que sea fácil crear configuraciones de sesión personalizadas sin usar scripts o ensamblados complejos de C#.
Una "configuración de sesión" o "punto de conexión" es una colección de configuraciones de equipo local que determinan aspectos como qué usuarios pueden crear sesiones en el equipo; qué comandos pueden ejecutar los usuarios en esas sesiones; y si la sesión debe ejecutarse como una cuenta virtual con privilegios. Para obtener más información sobre las configuraciones de sesión, vea 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. Debe usar Windows PowerShell 3.0 para incluir un archivo de configuración de sesión en una configuración de sesión. Sin embargo, los usuarios Windows PowerShell 2.0 (y versiones posteriores) se ven afectados por la configuración de la sesión.
Creación de sesiones personalizadas
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. 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 mediante la configuración de sesión. Como regla general, es más fácil usar el archivo de configuración de sesión que escribir un programa de C#.
Puede usar un archivo de configuración de sesión para crear elementos como sesiones totalmente funcionales para usuarios de alta confianza. sesiones bloqueadas que permiten un acceso mínimo; sesiones diseñadas para determinadas y que contienen solo los módulos necesarios para esas tareas; y sesiones en las que los usuarios sin privilegios solo pueden ejecutar comandos específicos como una cuenta con privilegios.
Además, puede administrar si los usuarios de la sesión pueden usar elementos de lenguaje de PowerShell, como bloques de script, o si solo pueden ejecutar comandos. Puede administrar la versión de los usuarios de PowerShell que se pueden ejecutar en la sesión. administrar qué módulos se importan en la sesión; y administran qué cmdlets, funciones y alias pueden ejecutar los usuarios de sesión. Al usar el campo RoleDefinitions, puede proporcionar a los usuarios diferentes funcionalidades en la sesión en función de la pertenencia a grupos.
Para obtener más información sobre RoleDefinitions y cómo definir este valor, vea el tema de ayuda del cmdlet New-PSRoleCapabilityFile.
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 mediante el cmdlet New-PSSessionConfigurationFile sesión. 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.
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 sesión.
El siguiente comando crea un archivo de configuración de sesión que usa los valores predeterminados. El archivo de configuración resultante solo usa los valores predeterminados porque no se incluyen parámetros distintos del parámetro Path (que especifica la ruta de acceso del archivo):
New-PSSessionConfigurationFile -Path .\Defaults.pssc
Para ver el nuevo archivo de configuración en el editor de texto predeterminado, use el siguiente comando:
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:
New-PSSessionConfigurationFile -LanguageMode NoLanguage
-Path .\NoLanguage.pssc
En el comando anterior, establecer el parámetro LanguageMode en NoLanguage impide que los usuarios puedan realizar tareas como escribir o ejecutar scripts o usar variables.
Para crear una configuración de sesión para sesiones en las que los usuarios solo pueden usar cmdlets Get, escriba:
New-PSSessionConfigurationFile -VisibleCmdlets Get-*
-Path .\GetSessions.pssc
En el ejemplo anterior, al establecer el parámetro VisibleCmdlets en Get-* se limita a los usuarios los cmdlets que tienen nombres que comienzan por el valor de cadena "Get-".
Para crear una configuración de sesión para las sesiones que se ejecutan con una cuenta virtual con privilegios en lugar de las credenciales del usuario, escriba:
New-PSSessionConfigurationFile -RunAsVirtualAccount
-Path .\VirtualAccount.pssc
Para crear una configuración de sesión para sesiones en las que los comandos visibles para el usuario se especifican en un archivo de funcionalidades de rol, escriba:
New-PSSessionConfigurationFile -RoleDefinitions
@{ 'CONTOSO\User' = @{ RoleCapabilities = 'Maintenance' }}
-Path .\Maintenance.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 agregar un archivo a la configuración de sesión más adelante.
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 sesión.
Por ejemplo, el comando siguiente usa el archivo NoLanguage.pssc cuando crea una configuración de sesión NoLanguage.
Register-PSSessionConfiguration -Name NoLanguage
-Path .\NoLanguage.pssc
Cuando se inicia una nueva sesión de NoLanguage, los usuarios solo tendrán acceso a los comandos de PowerShell.
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. Esto afecta a las sesiones nuevas creadas con la configuración de sesión especificada. Tenga en cuenta que Set-PSSessionConfiguration cmdlet cambia la propia sesión y no modifica el archivo de configuración de sesión.
Por ejemplo, el comando siguiente agrega el archivo NoLanguage.pssc a la configuración de sesión LockedDown.
Set-PSSessionConfiguration -Name LockedDown
-Path .\NoLanguage.pssc
Cuando los usuarios usan la configuración de sesión LockedDown para crear una sesión, podrán ejecutar cmdlets, pero no podrán crear ni usar variables, asignar valores ni usar otros elementos de lenguaje de PowerShell.
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. La ACL (lista de control de acceso) de la configuración de sesión determina quién puede usarla para crear una sesión.
$s = New-PSSession -ComputerName Srv01
-ConfigurationName LockedDown
Dado que las restricciones NoLanguage se agregaron a la configuración de sesión LockedDown, los usuarios de las sesiones LockedDown solo podrán ejecutar comandos y cmdlets de PowerShell. 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 $s variable. El primer comando, que ejecuta el cmdlet Get-UICulture y no usa ninguna variable, se ejecuta correctamente. El segundo comando, que obtiene el valor de la variable $PSUICulture, produce un error.
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ón
Todos los valores de una configuración de sesión, excepto RunAsVirtualAccount y RunAsVirtualAccountGroups, se pueden modificar editando el archivo de configuración de sesión usado por la configuración de sesión. Para ello, empiece por buscar la copia activa del archivo de configuración de sesión.
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.
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 comando siguiente obtiene la ubicación del archivo de configuración de sesión para la configuración de sesión NoLanguage.
(Get-PSSessionConfiguration -Name NoLanguage).ConfigFilePath
Ese comando devuelve una ruta de acceso de archivo similar a la siguiente:
C:\WINDOWS\System32\WindowsPowerShell\v1.0\SessionConfig\
NoLanguage_0c115179-ff2a-4f66-a5eb-e56e5692ba22.pssc
Puede editar el archivo .pssc en cualquier editor de texto. Una vez guardado el archivo, lo emplearán las sesiones nuevas que usen la configuración de sesión.
Si necesita modificar la configuración de RunAsVirtualAccount o RunAsVirtualAccountGroups, debe eliminar 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.
Probar un archivo de configuración de sesión
Use el cmdlet Test-PSSessionConfigurationFile para probar los archivos de configuración de sesión editados manualmente. Eso es importante: si la sintaxis y los valores de archivo no son válidos, los usuarios no podrán usar la configuración de sesión para crear una sesión.
Por ejemplo, el comando siguiente prueba el archivo de configuración de sesión activo de la configuración de sesión NoLanguage.
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álidosTest-PSSessionConfigurationFile devuelve True. Si la sintaxis y los valores no son válidos, el cmdlet devuelve False.
Puede usar Test-PSSessionConfigurationFile para probar cualquier archivo de configuración de sesión, incluidos los archivos que crea New-PSSessionConfiguration cmdlet. Para obtener más información, vea el tema de ayuda del cmdlet Test-PSSessionConfigurationFile.
Quitar un archivo de configuración de sesión
No se puede quitar un archivo de configuración de sesión de una configuración de sesión. Sin embargo, puede reemplazar el archivo por un nuevo archivo que use la configuración predeterminada. Esto cancela eficazmente la configuración utilizada por el archivo de configuración original.
Para reemplazar un archivo de configuración de sesión, cree un nuevo archivo de configuración de sesión que use 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.
Por ejemplo, los comandos siguientes 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.
New-PSSessionConfigurationFile -Path .\Default.pssc
Set-PSSessionConfiguration -Name NoLanguage
-Path .\Default.pssc
Cuando finalicen estos comandos, 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.
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 hacen que sea fácil detectar y analizar la configuración de sesión. (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 canalizado los datos devueltos al cmdlet Get-Member:
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 hacen que sea fácil buscar configuraciones de sesión específicas. 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. 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 que califiquen.
Get-PSSessionConfiguration |
where {$_.ExecutionPolicy -eq "RemoteSigned"}
El comando siguiente obtiene las configuraciones de sesión en las que RunAsUser es el Administrador de Exchange.
Get-PSSessionConfiguration |
where {$_.RunAsUser -eq "Exchange01\Admin01"}
Para ver información sobre las definiciones de roles asociadas a una configuración, use el cmdlet Get-PSSessionCapability. Este cmdlet le permite determinar los comandos y el entorno disponibles para usuarios específicos en puntos de conexión específicos.
NOTAS
Las configuraciones de sesión también admiten un tipo de sesión conocido como sesión "vacía". Un tipo de sesión Vacío permite crear sesiones personalizadas con comandos seleccionados. Si no agrega módulos, funciones o scripts a una sesión vacía, la sesión se limita a expresiones y puede que no sea de ningún uso práctico. La propiedad SessionType le indica si está trabajando con una sesión vacía o no.
CONSULTE TAMBIÉN
Disable-PSSessionConfiguration
New-PSSessionConfigurationFile
Register-PSSessionConfiguration
Test-PSSessionConfigurationFile