Variables
Las variables permiten la definición global de variables que están disponibles dentro de los scripts. También puede importar secretos que estarán disponibles dentro de los scripts o como credenciales de ejecución.
Crear una variable
Para crear una variable, vaya a la página Platform \ Variables. Haga clic en Create Variable para definir una nueva variable.

Las variables se añadirán a sus scripts antes de que se ejecuten.
Crear una variable secreta
Las variables secretas se almacenan en la bóveda seleccionada. El valor de esas variables nunca se almacena en Universal. Para definir una nueva variable secreta, haga clic en Create Secret Variable en la página de variables y seleccione la pestaña Secret.
Desde este diálogo podrá definir cadenas y PSCredentials en la bóveda especificada.

Formato de credenciales
En algunos entornos, puede ser necesario especificar el nombre de dominio en el campo de nombre de usuario. Puede especificarlo en el formato domain\user o user@domain. Si no lo hace, recibirá errores al intentar iniciar procesos, como scripts o dashboards, con esa cuenta de usuario.
Cuentas de servicio administradas de grupo
Al utilizar cuentas de servicio administradas de grupo (GMSA), deberá asegurarse de que la máquina y la cuenta tengan acceso a la cuenta GSMA. Puede seguir la guía de Microsoft aquí. Una vez completada la configuración, cree una nueva credencial en la gestión de secretos de PowerShell Universal y seleccione la opción Password Not Required. Introduzca la cuenta GSMA (p. ej., domain\user$). Siempre que la cuenta de alojamiento tenga los privilegios adecuados, podrá ejecutar trabajos con la cuenta GMSA.
Validación de credenciales
En Windows, puede validar las credenciales antes de guardar su valor. Haga clic en el botón Validate del campo de contraseña para intentar iniciar sesión con el usuario localmente. Este botón no aparecerá en sistemas que no sean Windows.
Roles
Aplicar roles a un secreto impedirá que el secreto sea accesible en trabajos programados, ya que no se aplican roles en el programador.
Las variables secretas pueden incluir acceso basado en roles. Los roles limitan quién puede usar el secreto en sus scripts y como credenciales de ejecución.
Cuando un secreto tiene un rol definido, no será accesible en recursos que no puedan proporcionar ese rol. Esto puede incluir lo siguiente:
Trabajos programados
API o aplicaciones no autenticadas
Terminales
Bóvedas
Base de datos
La bóveda de base de datos almacena secretos dentro de la base de datos de PowerShell Universal. Estos secretos se cifran mediante cifrado AES con una clave personalizable. Puede personalizar la clave especificando Secrets \ Database \ EncryptionKey.
appsettings.json
Puede configurar este ajuste en appsettings.json.
Variable de entorno
Puede configurar este ajuste con una variable de entorno.
BuiltInLocalVault
Si PowerShell Universal se ejecuta como una cuenta de servicio administrada de grupo, no puede utilizar BuiltInLocalVault.
Los valores de los secretos con BuiltInLocalVault se almacenan en la instancia del Administrador de credenciales de Windows del principal de seguridad que ejecuta PSU. Por ejemplo, la cuenta de servicio del usuario que ejecuta el servicio Universal. Si cambia de usuario (por ejemplo, al ejecutarse como una cuenta de servicio), la cuenta no tendrá acceso a los secretos del usuario anterior y deberá volver a añadir esos secretos.
PSUSecretStore
Si PowerShell Universal se ejecuta como una cuenta de servicio administrada de grupo, no puede utilizar PSUSecretStore.
La bóveda PSUSecretStore está integrada con el módulo SecretStore de Microsoft para almacenar secretos en un fichero multiplataforma. Este fichero está vinculado a la cuenta de usuario actual que ejecuta PowerShell Universal. La contraseña de la bóveda se almacena en appsettings.json.
Az.KeyVault
De forma predeterminada, no incluimos la extensión de Azure Key Vault directamente en PowerShell Universal. Está disponible un contenedor que incluye los módulos Az.Accounts y Az.KeyVault necesarios para permitirle usar KeyVault de forma nativa. Puede encontrarlo en Docker Hub.
A continuación encontrará cómo configurarlo. Este ejemplo utiliza una versión de aplicación web alojada en Azure de PowerShell Universal.
En Azure, tendremos que configurar una identidad administrada para nuestra aplicación web. Este paso no es necesariamente obligatorio si se ejecuta fuera de Azure. Puede habilitar la identidad administrada en la página Identity de su aplicación web.

A continuación, deberá permitir que su identidad administrada acceda a su key vault y lea su suscripción. Puede añadir la identidad administrada al grupo integrado Reader para permitir el acceso a la suscripción.

Después, otorgué todos los privilegios de gestión de secretos y claves a mi identidad administrada en mi recurso de Key Vault.

Por último, tendremos que registrar la key vault y conectarnos a Azure cuando se inicie la aplicación web. Esto puede lograrse utilizando los módulos Az.Account y Az.KeyVault.
Después de implementar su aplicación web, primero deberá instalar los módulos Az.Account y Az.KeyVault. Puede hacerlo en la página de módulos. Se instalarán en el repositorio local dentro de la aplicación web.

A continuación, cree un script en PowerShell Universal para conectarse a Azure y registrar la bóveda. Ejecute el script para verificar que funciona correctamente.
Ahora, cuando cree secretos, verá AzureKeyVault disponible.

Para garantizar que la aplicación esté conectada a Azure y que la key vault esté registrada, ejecute el script en vaults.ps1. Recomendamos ejecutar el script en un proceso externo de PowerShell para evitar conflictos de ensamblados con las DLL de PowerShell Universal.
Este script se ejecuta antes de que se registren las variables y se localicen las bóvedas. Puede crear este fichero directamente en el directorio Repository\.universal. Se ejecutará durante el inicio del sistema, antes de que se ejecuten otros scripts de configuración.
vaults.ps1
El fichero vaults.ps1 contiene comandos de registro de bóvedas. Aunque el ejemplo anterior define un registro de bóveda de secretos de Azure KeyVault, en realidad puede incluir cualquier registro de bóveda que necesite en este fichero.
Puede editar las bóvedas haciendo clic en Platform \ Variables \ Vaults y luego ir a la pestaña vaults.ps1.
Importar variables secretas
También puede importar secretos preexistentes como variables en Universal. Los valores de las variables no se importan, sino que se buscarán durante la ejecución. Haga clic en el botón Import Secret para importar secretos.
Uso de variables
Las variables se pueden utilizar en API, scripts y paneles. Al usar los entornos predeterminados, todas las variables se importan automáticamente. Esto se consigue especificando el parámetro -Variable de New-PSUEnvironment con un comodín (*). Si utiliza sus propios entornos, tendrá que configurar qué variables desea incluir. Puede hacer referencia a una variable como lo haría con cualquier otra variable de PowerShell. La variable contendrá el valor que haya establecido. Si utiliza un secreto, contendrá el valor del secreto.
Puede personalizar qué variables se permiten en un entorno personalizando el parámetro -Variable del entorno.
Consulte Entornos para obtener más información.
Ámbito de secretos
Para acceder a los secretos que ha añadido a PowerShell Universal, puede utilizar el ámbito $Secret. Por ejemplo, si definió un secreto llamado Credential, podría acceder a ese secreto en cualquier lugar con el ámbito de secretos. No puede establecer secretos utilizando el ámbito de secretos.
Acceder a las variables por nombre
Puede acceder a las variables por nombre utilizando el prefijo $Secret:.
Acceder a los valores de forma dinámica
Puede acceder al ámbito de secretos de forma dinámica utilizando Get-Item. El ámbito de secretos se implementa como un proveedor. Esto resulta útil si no tiene nombres de variables estáticos.
ForEach-Object -Parallel
Para utilizar secretos al usar ForEach-Object con el parámetro -Parallel, deberá aprovechar la palabra clave $using.
Configurar la contraseña de PSUSecretStore
De forma predeterminada, la contraseña de la bóveda PSUSecretStore se almacena en appsettings.json en Secrets \ SecretStore \ Password.
Variables integradas
Las siguientes variables están disponibles en todos los entornos dentro de PowerShell Universal.
$PSUEnvironment
string
El nombre del entorno en el que se ejecuta el script (p. ej., Integrated)
$Repository
string
La ruta absoluta a la carpeta del repositorio.
API
Existe un conjunto de variables predefinidas disponibles en los endpoints de API. Podrá utilizar estas variables en sus scripts.
$Url
URL que el cliente utilizó para llamar al endpoint
String
$Method
El método HTTP utilizado para llamar al endpoint
String
$Headers
Encabezados proporcionados por el cliente para llamar al endpoint
Hashtable
$Body
La cadena codificada en UTF8 del contenido de la solicitud
String
$Data
Matriz de bytes binaria para el contenido de la solicitud
Byte[]
$RemoteIpAddress
La dirección IP remota utilizada para realizar la solicitud.
String
$LocalIpAddress
La dirección IP local utilizada para atender la solicitud.
String
$RemotePort
El puerto remoto al que se llamó para realizar la solicitud.
Integer
$LocalPort
El puerto local que se utilizó para atender la solicitud.
Integer
$Identity
El nombre de identidad del principal que accede a la API.
String
$UrlDefinition
La definición de la URL.
String
$ClaimsPrincipal
La entidad de seguridad de reclamaciones del usuario actual. Es el mismo objeto que se proporciona a las políticas de acceso basadas en roles.
Aplicaciones
A continuación se muestran las variables disponibles en las aplicaciones, además de las variables globales.
$User
El nombre de usuario del usuario que ha iniciado sesión. $Null si la autenticación está deshabilitada.
String
$Roles
Los roles que se han concedido al usuario. $Null si la autenticación está deshabilitada.
String[]
$RemoteIpAddress
La dirección IP remota del usuario conectado.
String
$RemotePort
El puerto remoto del usuario conectado.
Int
$ClaimsPrincipal
La entidad de seguridad de reclamaciones del usuario actual. Es el mismo objeto que se proporciona a las políticas de acceso basadas en roles.
$Headers
Los encabezados proporcionados por el navegador.
hashtable
$Cookies
Las cookies de la solicitud proporcionadas por el navegador.
hashtable
$PSUAppToken
El token de aplicación del usuario actual. Solo está disponible cuando -GrantAppToken está habilitado.
string
$PSUComputerName
La URL del servidor PSU. Solo está disponible cuando -GrantAppToken está habilitado.
string
$DashboardName
El nombre de la aplicación actual
string
$Query
Los parámetros de la cadena de consulta de la URL de la aplicación
Hashtable
$RefreshToken
El token de actualización al usar OpenID Connect
string
$AccessToken
El token de aplicación al usar OpenID Connect
string
$UDPage
El nombre de la página actual.
string
Scripts
Hay varias variables integradas que se definen cuando se ejecuta un trabajo. Puede usar estas variables en sus scripts para recuperar información sobre el trabajo actual.
$UAJob
El trabajo actual que se está ejecutando. Incluirá propiedades como el script, el usuario que inició el trabajo y cuándo se inició el trabajo.
$UAJobId
El ID del trabajo en ejecución.
$UAScript
El script que se está ejecutando. Incluirá propiedades como el nombre del script y la ruta al script.
$UAScriptId
El ID del script en ejecución.
$UASchedule
La programación que se utilizó para iniciar el script.
$UAScheduleId
El ID de la programación que inició el script.
$AccessToken
Al usar la autenticación OIDC, puede recuperar el token de acceso del usuario actual para acceder a los recursos en su nombre.
$Roles
Los roles del llamante del script.
Estructura del objeto $UAJob
Tenga en cuenta que las propiedades pueden ser nulas. Los objetos DateTime se devuelven en la zona horaria UTC.
Recuperar el usuario que inició un script
Puede recuperar el nombre del usuario que inició el script usando la variable UAJob
Comprobar si un trabajo se ejecutó manualmente
Puede comprobar si un trabajo se ejecutó manualmente usando las propiedades Schedule y Trigger.
Variables de preferencia
Las variables de preferencia se pueden configurar en un script, durante la ejecución de un trabajo y a nivel global. Estas incluyen:
DebugPreference
ErrorActionPreference
InformationPreference
ProgressPreference
VerbosePreference
WarningPreference
Las variables de preferencia tienen precedencia. La siguiente lista está ordenada por precedencia. Por ejemplo, si un script establece manualmente la variable $DebugPreference, esta anulará el valor establecido en el cuadro de diálogo de propiedades del script.
Script
Cuadro de diálogo Run o Invoke-PSUScript
Propiedades del script
Configuración global
API
Véase también
Última actualización
¿Te fue útil?