Variabili
Le variabili consentono la definizione globale di variabili disponibili all'interno degli script. È inoltre possibile importare segreti che risultano disponibili anche negli script o come credenziali di esecuzione.
Creazione di una variabile
Per creare una variabile, si porti alla pagina Piattaforma \ Variabili. Faccia clic su Crea variabile per definire una nuova variabile.

Le variabili verranno aggiunte agli script prima della loro esecuzione.
Creazione di una variabile segreta
Le variabili segrete sono archiviate nella cassaforte selezionata. Il valore di tali variabili non viene mai memorizzato in Universal. Per definire una nuova variabile segreta, faccia clic su Crea variabile segreta nella pagina delle variabili e selezioni la scheda Segreto.
Da questa finestra di dialogo potrà definire stringhe e PSCredentials nella cassaforte specificata.

Formato delle credenziali
In alcuni ambienti può essere necessario specificare il nome di dominio nel campo del nome utente. È possibile specificarlo nel formato domain\user oppure user@domain. In caso contrario, riceverà errori quando tenterà di avviare processi, come script o dashboard, con quell'account utente.
Group Managed Service Accounts
Quando si utilizzano i Group Managed Service Accounts (GMSA), dovrà assicurarsi che la macchina e l'account abbiano accesso all'account GSMA. Può seguire la guida di Microsoft qui. Una volta completata la configurazione, crei una nuova credenziale nella gestione dei segreti di PowerShell Universal e selezioni l'opzione Password non richiesta. Inserisca l'account GSMA (ad esempio domain\user$). Purché l'account di hosting disponga dei privilegi appropriati, potrà eseguire i job con l'account GMSA.
Convalida delle credenziali
Su Windows è possibile convalidare le credenziali prima di salvarne il valore. Faccia clic sul pulsante Convalida nel campo della password per tentare l'accesso dell'utente in locale. Questo pulsante non compare sui sistemi non Windows.
Ruoli
L'applicazione di ruoli a un segreto impedirà che il segreto sia accessibile nei job pianificati, poiché nell'utilità di pianificazione non viene applicato alcun ruolo.
Le variabili segrete possono includere l'accesso basato sui ruoli. I ruoli limitano chi può utilizzare il segreto nei propri script e come credenziali di esecuzione.
Quando per un segreto è definito un ruolo, esso non sarà accessibile nelle risorse che non possono fornire tale ruolo. Ciò può includere quanto segue:
Job pianificati
API o app non autenticate
Terminali
Casseforti
Database
La cassaforte del database archivia i segreti all'interno del database di PowerShell Universal. Questi segreti sono cifrati con crittografia AES utilizzando una chiave personalizzabile. È possibile personalizzare la chiave specificando Secrets \ Database \ EncryptionKey.
appsettings.json
Può configurare questa impostazione in appsettings.json.
Variabile di ambiente
Può configurare questa impostazione con una variabile di ambiente.
BuiltInLocalVault
Se PowerShell Universal viene eseguito come group managed service account, non può utilizzare BuiltInLocalVault.
I valori dei segreti con BuiltInLocalVault sono archiviati nell'istanza di Gestione credenziali di Windows dell'entità di sicurezza che esegue PSU. Ad esempio, l'account di servizio dell'utente che esegue il servizio Universal. Se cambia utente (ad esempio eseguendo il prodotto con un account di servizio), l'account non avrà accesso ai segreti dell'utente precedente e dovrà aggiungere nuovamente tali segreti.
PSUSecretStore
Se PowerShell Universal viene eseguito come group managed service account, non può utilizzare PSUSecretStore.
La cassaforte PSUSecretStore è integrata con il modulo Microsoft SecretStore per archiviare i segreti in un file multipiattaforma. Questo file è associato all'account utente corrente che esegue PowerShell Universal. La password della cassaforte è archiviata in appsettings.json.
Az.KeyVault
Per impostazione predefinita, non includiamo l'estensione Azure Key Vault direttamente in PowerShell Universal. È disponibile un container che include i moduli Az.Accounts e Az.KeyVault richiesti, per consentirle di utilizzare KeyVault immediatamente. Lo può trovare su Docker Hub.
Di seguito troverà come configurarlo. Questo esempio utilizza una versione web-app di PowerShell Universal ospitata in Azure.
In Azure sarà necessario configurare un'identità gestita per la nostra app web. Questo passaggio non è necessariamente richiesto se si esegue il prodotto al di fuori di Azure. Può abilitare l'identità gestita nella pagina Identità della sua app web.

Successivamente dovrà consentire alla sua identità gestita di accedere al key vault e di leggere la sottoscrizione. Può aggiungere l'identità gestita al gruppo integrato Reader per consentire l'accesso alla sottoscrizione.

Poi ho fornito tutti i privilegi per la gestione di segreti e chiavi alla mia identità gestita nella mia risorsa Key Vault.

Infine, dovremo registrare il key vault e connetterci ad Azure all'avvio dell'app web. Ciò può essere realizzato utilizzando i moduli Az.Account e Az.KeyVault.
Dopo aver distribuito la sua app web, dovrà innanzitutto installare i moduli Az.Account e Az.KeyVault. Può farlo nella pagina dei moduli. Verranno installati nel repository locale all'interno dell'app web.

Successivamente, crei uno script in PowerShell Universal per connettersi ad Azure e registrare la cassaforte. Esegua lo script per verificare che funzioni correttamente.
Ora, quando creerà dei segreti, vedrà AzureKeyVault disponibile.

Per garantire che l'applicazione sia connessa ad Azure e che il key vault sia registrato, esegua lo script all'interno di vaults.ps1. Consigliamo di eseguire lo script in un processo PowerShell esterno per evitare conflitti di assembly con le DLL di PowerShell Universal.
Questo script viene eseguito prima che le variabili siano registrate e le casseforti individuate. Può creare questo file direttamente nella directory Repository\.universal. Verrà eseguito durante l'avvio del sistema, prima dell'esecuzione degli altri script di configurazione.
vaults.ps1
Il file vaults.ps1 contiene i comandi di registrazione delle casseforti. Sebbene l'esempio precedente definisca la registrazione di una cassaforte di segreti Azure KeyVault, in questo file può in realtà includere qualsiasi registrazione di cassaforte le occorra.
Può modificare le casseforti facendo clic su Piattaforma \ Variabili \ Casseforti e portandosi quindi alla scheda vaults.ps1.
Importazione di variabili segrete
È anche possibile importare in Universal segreti preesistenti come variabili. I valori delle variabili non vengono importati, ma verranno recuperati durante l'esecuzione. Faccia clic sul pulsante Importa segreto per importare i segreti.
Utilizzo delle variabili
Le variabili possono essere utilizzate in API, script e dashboard. Quando si utilizzano gli ambienti predefiniti, tutte le variabili vengono importate automaticamente. Ciò si ottiene specificando il parametro -Variable di New-PSUEnvironment con un carattere jolly (*). Se utilizza ambienti personalizzati, dovrà configurare quali variabili includere. Può fare riferimento a una variabile come a qualsiasi altra variabile PowerShell. La variabile conterrà il valore impostato. Se utilizza un segreto, conterrà il valore del segreto.
Può personalizzare quali variabili sono consentite in un ambiente personalizzando il parametro -Variable dell'ambiente.
Consulti Ambienti per maggiori informazioni.
Ambito Secret
Per accedere ai segreti aggiunti a PowerShell Universal, può utilizzare l'ambito $Secret. Ad esempio, se ha definito un segreto denominato Credential, potrebbe accedere a tale segreto ovunque con l'ambito secret. Non è possibile impostare i segreti utilizzando l'ambito secret.
Accedere alle variabili per nome
Può accedere alle variabili per nome utilizzando il prefisso $Secret:.
Accedere ai valori in modo dinamico
Può accedere all'ambito secret in modo dinamico utilizzando Get-Item. L'ambito secret è implementato come provider. Ciò è utile se non dispone di nomi di variabile statici.
ForEach-Object -Parallel
Per utilizzare i segreti quando si usa ForEach-Object con il parametro -Parallel, dovrà avvalersi della parola chiave $using.
Configurazione della password di PSUSecretStore
Per impostazione predefinita, la password della cassaforte PSUSecretStore è archiviata in appsettings.json in Secrets \ SecretStore \ Password.
Variabili integrate
Le seguenti variabili sono disponibili in tutti gli ambienti all'interno di PowerShell Universal.
$PSUEnvironment
string
Il nome dell'ambiente in cui viene eseguito lo script (ad esempio Integrated)
$Repository
string
Il percorso assoluto della cartella del repository.
API
Esiste un insieme di variabili predefinite disponibili negli endpoint API. Potrà utilizzare queste variabili nei suoi script.
$Url
URL utilizzato dal client per chiamare l'endpoint
String
$Method
Il metodo HTTP utilizzato per chiamare l'endpoint
String
$Headers
Intestazioni fornite dal client per chiamare l'endpoint
Hashtable
$Body
La stringa con codifica UTF8 del contenuto della richiesta
String
$Data
Array di byte binari per il contenuto della richiesta
Byte[]
$RemoteIpAddress
L'indirizzo IP remoto utilizzato per effettuare la richiesta.
String
$LocalIpAddress
L'indirizzo IP locale utilizzato per servire la richiesta.
String
$RemotePort
La porta remota chiamata per effettuare la richiesta.
Integer
$LocalPort
La porta locale utilizzata per servire la richiesta.
Integer
$Identity
Il nome dell'identità dell'entità che accede all'API.
String
$UrlDefinition
La definizione dell'URL.
String
$ClaimsPrincipal
Il claims principal dell'utente corrente. Si tratta dello stesso oggetto fornito ai criteri di accesso basati sui ruoli.
App
Di seguito sono riportate le variabili disponibili nelle app oltre alle variabili globali.
$User
Il nome utente dell'utente connesso. $Null se l'autenticazione è disabilitata.
String
$Roles
I ruoli concessi all'utente. $Null se l'autenticazione è disabilitata.
String[]
$RemoteIpAddress
L'indirizzo IP remoto dell'utente connesso.
String
$RemotePort
La porta remota dell'utente connesso.
Int
$ClaimsPrincipal
Il claims principal dell'utente corrente. Si tratta dello stesso oggetto fornito ai criteri di accesso basati sui ruoli.
$Headers
Le intestazioni fornite dal browser.
hashtable
$Cookies
I cookie della richiesta forniti dal browser.
hashtable
$PSUAppToken
Il token dell'app dell'utente corrente. Disponibile solo quando -GrantAppToken è abilitato.
string
$PSUComputerName
L'URL del server PSU. Disponibile solo quando -GrantAppToken è abilitato.
string
$DashboardName
Il nome dell'app corrente
string
$Query
I parametri della query string dall'URL dell'app
Hashtable
$RefreshToken
Il token di aggiornamento quando si utilizza OpenID Connect
string
$AccessToken
Il token dell'app quando si utilizza OpenID Connect
string
$UDPage
Il nome della pagina corrente.
string
Script
Esistono diverse variabili integrate che vengono definite quando viene eseguito un processo. È possibile utilizzare queste variabili negli script per recuperare informazioni sul processo corrente.
$UAJob
Il processo attualmente in esecuzione. Includerà proprietà come lo script, l'utente che ha avviato il processo e il momento in cui il processo è stato avviato.
$UAJobId
L'ID del processo in esecuzione.
$UAScript
Lo script in esecuzione. Includerà proprietà come il nome dello script e il percorso dello script.
$UAScriptId
L'ID dello script in esecuzione.
$UASchedule
La pianificazione utilizzata per avviare lo script.
$UAScheduleId
L'ID della pianificazione che ha avviato lo script.
$AccessToken
Quando si utilizza l'autenticazione OIDC, è possibile recuperare il token di accesso dell'utente corrente per accedere alle risorse per suo conto.
$Roles
I ruoli del chiamante dello script.
Struttura dell'oggetto $UAJob
Tenga presente che le proprietà possono essere null. Gli oggetti DateTime vengono restituiti nel fuso orario UTC.
Recupero dell'utente che ha avviato uno script
È possibile recuperare il nome dell'utente che ha avviato lo script utilizzando la variabile UAJob
Verifica se un processo è stato eseguito manualmente
È possibile verificare se un processo è stato eseguito manualmente utilizzando le proprietà Schedule e Trigger.
Variabili di preferenza
Le variabili di preferenza possono essere configurate su uno script, durante l'esecuzione di un processo e a livello globale. Queste includono:
DebugPreference
ErrorActionPreference
InformationPreference
ProgressPreference
VerbosePreference
WarningPreference
Le variabili di preferenza hanno una precedenza. L'elenco seguente è ordinato per precedenza. Ad esempio, se uno script imposta manualmente la variabile $DebugPreference, questa sovrascriverà il valore impostato nella finestra di dialogo delle proprietà dello script.
Script
Finestra di dialogo Run oppure Invoke-PSUScript
Proprietà dello script
Impostazioni globali
API
Vedi anche
Ultimo aggiornamento
È stato utile?