Variablen
Variablen ermöglichen die globale Definition von Variablen, die innerhalb von Skripten verfügbar sind. Sie können auch Secrets importieren, die ebenfalls innerhalb von Skripten oder als Run-as-Anmeldeinformationen verfügbar sind.
Erstellen einer Variable
Um eine Variable zu erstellen, navigieren Sie zur Seite Platform \ Variables. Klicken Sie auf Create Variable, um eine neue Variable zu definieren.

Variablen werden Ihren Skripten hinzugefügt, bevor diese ausgeführt werden.
Erstellen einer geheimen Variable
Geheime Variablen werden im ausgewählten Tresor gespeichert. Der Wert dieser Variablen wird niemals in Universal gespeichert. Um eine neue geheime Variable zu definieren, klicken Sie auf der Variablenseite auf Create Secret Variable und wählen Sie die Registerkarte Secret aus.
In diesem Dialogfeld können Sie Zeichenfolgen und PSCredentials im angegebenen Tresor definieren.

Format der Anmeldeinformationen
In manchen Umgebungen kann es notwendig sein, den Domänennamen im Feld für den Benutzernamen anzugeben. Sie können ihn entweder im Format domain\user oder user@domain angeben. Wenn Sie dies nicht tun, erhalten Sie Fehler beim Versuch, Prozesse wie Skripte oder Dashboards unter diesem Benutzerkonto zu starten.
Group Managed Service Accounts
Bei der Verwendung von Group Managed Service Accounts (GMSA) müssen Sie sicherstellen, dass der Computer und das Konto Zugriff auf das GSMA-Konto haben. Sie können dem Leitfaden von Microsoft hier folgen. Sobald die Konfiguration abgeschlossen ist, erstellen Sie neue Anmeldeinformationen in der Secret-Verwaltung von PowerShell Universal und wählen Sie die Option Password Not Required aus. Geben Sie das GSMA-Konto ein (z. B. domain\user$). Solange das Hosting-Konto über die erforderlichen Berechtigungen verfügt, können Sie Jobs unter dem GMSA-Konto ausführen.
Validierung von Anmeldeinformationen
Unter Windows können Sie Anmeldeinformationen validieren, bevor Sie deren Wert speichern. Klicken Sie im Passwortfeld auf die Schaltfläche Validate, um zu versuchen, den Benutzer lokal anzumelden. Diese Schaltfläche wird auf Nicht-Windows-Systemen nicht angezeigt.
Rollen
Das Anwenden von Rollen auf ein Secret verhindert, dass das Secret in geplanten Jobs zugänglich ist, da im Scheduler keine Rollen angewendet werden.
Geheime Variablen können einen rollenbasierten Zugriff enthalten. Rollen schränken ein, wer das Secret in seinen Skripten und als Run-as-Anmeldeinformationen verwenden kann.
Wenn für ein Secret eine Rolle definiert ist, ist es in Ressourcen, die diese Rolle nicht bereitstellen können, nicht zugänglich. Dazu können die folgenden gehören:
Geplante Jobs
Nicht authentifizierte APIs oder Apps
Terminals
Tresore
Datenbank
Der Datenbank-Tresor speichert Secrets in der PowerShell Universal-Datenbank. Diese Secrets werden mit AES-Verschlüsselung unter Verwendung eines anpassbaren Schlüssels verschlüsselt. Sie können den Schlüssel anpassen, indem Sie Secrets \ Database \ EncryptionKey angeben.
appsettings.json
Sie können diese Einstellung in appsettings.json konfigurieren.
Umgebungsvariable
Sie können diese Einstellung mit einer Umgebungsvariable konfigurieren.
BuiltInLocalVault
Wenn PowerShell Universal als Group Managed Service Account ausgeführt wird, kann es den BuiltInLocalVault nicht verwenden.
Werte für Secrets mit dem BuiltInLocalVault werden in der Windows Credential Manager-Instanz des Sicherheitsprinzipals gespeichert, der PSU ausführt. Zum Beispiel im Dienstkonto des Benutzers, der den Universal-Dienst ausführt. Wenn Sie den Benutzer wechseln (etwa bei der Ausführung unter einem Dienstkonto), hat das Konto keinen Zugriff auf die Secrets des vorherigen Benutzers und Sie müssen diese Secrets erneut hinzufügen.
PSUSecretStore
Wenn PowerShell Universal als Group Managed Service Account ausgeführt wird, kann es den PSUSecretStore nicht verwenden.
Der Tresor PSUSecretStore ist in das Microsoft-Modul SecretStore integriert, um Secrets in einer plattformübergreifenden Datei zu speichern. Diese Datei ist an das aktuelle Benutzerkonto gebunden, unter dem PowerShell Universal ausgeführt wird. Das Passwort für den Tresor wird in appsettings.json gespeichert.
Az.KeyVault
Standardmäßig ist die Azure Key Vault-Erweiterung nicht direkt in PowerShell Universal enthalten. Ein Container mit den erforderlichen Modulen Az.Accounts und Az.KeyVault ist verfügbar, damit Sie KeyVault sofort verwenden können. Dieser ist auf Docker Hub zu finden.
Nachfolgend finden Sie, wie Sie es konfigurieren. Dieses Beispiel verwendet eine in Azure gehostete Web-App-Version von PowerShell Universal.
In Azure müssen wir eine verwaltete Identität für unsere Web-App konfigurieren. Dieser Schritt ist nicht unbedingt erforderlich, wenn Sie außerhalb von Azure arbeiten. Sie können die verwaltete Identität auf der Seite Identity Ihrer Web-App aktivieren.

Als Nächstes müssen Sie Ihrer verwalteten Identität den Zugriff auf Ihren Key Vault und das Lesen Ihres Abonnements erlauben. Sie können die verwaltete Identität der integrierten Gruppe Reader hinzufügen, um den Zugriff auf das Abonnement zu ermöglichen.

Anschließend habe ich meiner verwalteten Identität in meiner Key Vault-Ressource alle Berechtigungen für die Secret- und Schlüsselverwaltung erteilt.

Schließlich müssen wir den Key Vault registrieren und beim Start der Web-App eine Verbindung zu Azure herstellen. Dies kann mit den Modulen Az.Account und Az.KeyVault erreicht werden.
Nach der Bereitstellung Ihrer Web-App müssen Sie zunächst die Module Az.Account und Az.KeyVault installieren. Dies können Sie auf der Modulseite tun. Sie werden im lokalen Repository innerhalb der Web-App installiert.

Erstellen Sie als Nächstes ein Skript in PowerShell Universal, um eine Verbindung zu Azure herzustellen und den Tresor zu registrieren. Führen Sie das Skript aus, um zu überprüfen, ob es ordnungsgemäß funktioniert.
Wenn Sie nun Secrets erstellen, sehen Sie AzureKeyVault als verfügbar.

Um sicherzustellen, dass die Anwendung mit Azure verbunden und der Key Vault registriert ist, führen Sie das Skript in vaults.ps1 aus. Wir empfehlen, das Skript in einem externen PowerShell-Prozess auszuführen, um Assembly-Konflikte mit PowerShell Universal-DLLs zu vermeiden.
Dieses Skript wird ausgeführt, bevor Variablen registriert und Tresore gefunden werden. Sie können diese Datei direkt im Verzeichnis Repository\.universal erstellen. Sie wird beim Systemstart ausgeführt, bevor andere Konfigurationsskripte ausgeführt werden.
vaults.ps1
Die Datei vaults.ps1 enthält Befehle zur Tresorregistrierung. Während das obige Beispiel die Registrierung eines Azure KeyVault-Secret-Tresors definiert, können Sie in dieser Datei tatsächlich jede benötigte Tresorregistrierung aufnehmen.
Sie können Tresore bearbeiten, indem Sie auf Platform \ Variables \ Vaults klicken und dann zur Registerkarte vaults.ps1 navigieren.
Importieren geheimer Variablen
Sie können auch bereits vorhandene Secrets als Variablen in Universal importieren. Die Variablenwerte werden nicht importiert, sondern während der Ausführung nachgeschlagen. Klicken Sie auf die Schaltfläche Import Secret, um Secrets zu importieren.
Verwendung von Variablen
Variablen können in APIs, Skripten und Dashboards verwendet werden. Bei Verwendung der Standardumgebungen werden alle Variablen automatisch importiert. Dies wird erreicht, indem der Parameter -Variable von New-PSUEnvironment mit einem Platzhalter (*) angegeben wird. Wenn Sie eigene Umgebungen verwenden, müssen Sie konfigurieren, welche Variablen Sie einbeziehen möchten. Sie können eine Variable wie jede andere PowerShell-Variable referenzieren. Die Variable enthält den von Ihnen festgelegten Wert. Wenn Sie ein Geheimnis verwenden, enthält sie den Wert des Geheimnisses.
Sie können anpassen, welche Variablen in einer Umgebung zulässig sind, indem Sie den Parameter -Variable der Umgebung anpassen.
Weitere Informationen finden Sie unter Umgebungen.
Secret-Scope
Um auf Secrets zuzugreifen, die Sie zu PowerShell Universal hinzugefügt haben, können Sie den $Secret-Scope verwenden. Wenn Sie beispielsweise ein Secret mit dem Namen Credential definiert haben, könnten Sie überall über den Secret-Scope auf dieses Secret zugreifen. Sie können Secrets nicht über den Secret-Scope festlegen.
Zugriff auf Variablen anhand des Namens
Sie können über das Präfix $Secret: anhand des Namens auf Variablen zugreifen.
Dynamischer Zugriff auf Werte
Sie können mit Get-Item dynamisch auf den Secret-Scope zugreifen. Der Secret-Scope ist als Provider implementiert. Dies ist hilfreich, wenn Sie keine statischen Variablennamen haben.
ForEach-Object -Parallel
Um Secrets bei der Verwendung von ForEach-Object mit dem Parameter -Parallel zu nutzen, müssen Sie das Schlüsselwort $using verwenden.
Konfigurieren des PSUSecretStore-Passworts
Standardmäßig wird das Passwort des Tresors PSUSecretStore in appsettings.json unter Secrets \ SecretStore \ Password gespeichert.
Integrierte Variablen
Die folgenden Variablen sind in allen Umgebungen innerhalb von PowerShell Universal verfügbar.
$PSUEnvironment
string
Der Name der Umgebung, in der das Skript ausgeführt wird (z. B. Integrated)
$Repository
string
Der absolute Pfad zum Repository-Ordner.
API
Es gibt eine Reihe vordefinierter Variablen, die in API-Endpunkten verfügbar sind. Sie können diese Variablen in Ihren Skripten verwenden.
$Url
URL, die der Client zum Aufrufen des Endpunkts verwendet hat
String
$Method
Die HTTP-Methode, die zum Aufrufen des Endpunkts verwendet wurde
String
$Headers
Vom Client bereitgestellte Header zum Aufrufen des Endpunkts
Hashtable
$Body
Die UTF8-kodierte Zeichenfolge des Inhalts der Anfrage
String
$Data
Binäres Byte-Array für den Inhalt der Anfrage
Byte[]
$RemoteIpAddress
Die Remote-IP-Adresse, die zum Stellen der Anfrage verwendet wurde.
String
$LocalIpAddress
Die lokale IP-Adresse, die zur Bearbeitung der Anfrage verwendet wurde.
String
$RemotePort
Der Remote-Port, der zum Stellen der Anfrage aufgerufen wurde.
Integer
$LocalPort
Der lokale Port, der zur Bearbeitung der Anfrage verwendet wurde.
Integer
$Identity
Der Identitätsname des Prinzipals, der auf die API zugreift.
String
$UrlDefinition
Die Definition für die URL.
String
$ClaimsPrincipal
Der Claims Principal des aktuellen Benutzers. Dies ist dasselbe Objekt, das rollenbasierten Zugriffsrichtlinien bereitgestellt wird.
Apps
Nachfolgend finden Sie Variablen, die zusätzlich zu den globalen Variablen in Apps verfügbar sind.
$User
Der Benutzername des angemeldeten Benutzers. $Null, wenn die Authentifizierung deaktiviert ist.
String
$Roles
Die Rollen, die dem Benutzer zugewiesen wurden. $Null, wenn die Authentifizierung deaktiviert ist.
String[]
$RemoteIpAddress
Die Remote-IP-Adresse des verbundenen Benutzers.
String
$RemotePort
Der Remote-Port des verbundenen Benutzers.
Int
$ClaimsPrincipal
Der Claims Principal des aktuellen Benutzers. Dies ist dasselbe Objekt, das rollenbasierten Zugriffsrichtlinien bereitgestellt wird.
$Headers
Die vom Browser bereitgestellten Header.
hashtable
$Cookies
Die vom Browser bereitgestellten Anfrage-Cookies.
hashtable
$PSUAppToken
Das App-Token des aktuellen Benutzers. Nur verfügbar, wenn -GrantAppToken aktiviert ist.
string
$PSUComputerName
Die URL des PSU-Servers. Nur verfügbar, wenn -GrantAppToken aktiviert ist.
string
$DashboardName
Der Name der aktuellen App
string
$Query
Die Query-String-Parameter aus der URL der App
Hashtable
$RefreshToken
Das Refresh-Token bei Verwendung von OpenID Connect
string
$AccessToken
Das App-Token bei Verwendung von OpenID Connect
string
$UDPage
Der Name der aktuellen Seite.
string
Skripte
Es gibt mehrere integrierte Variablen, die beim Ausführen eines Jobs definiert werden. Sie können diese Variablen in Ihren Skripten verwenden, um Informationen über den aktuellen Job abzurufen.
$UAJob
Der aktuell laufende Job. Dies umfasst Eigenschaften wie das Skript, den Benutzer, der den Job gestartet hat, und wann der Job gestartet wurde.
$UAJobId
Die ID des laufenden Jobs.
$UAScript
Das laufende Skript. Dies umfasst Eigenschaften wie den Namen des Skripts und den Pfad zum Skript.
$UAScriptId
Die ID des laufenden Skripts.
$UASchedule
Der Zeitplan, der zum Starten des Skripts verwendet wurde.
$UAScheduleId
Die ID des Zeitplans, der das Skript gestartet hat.
$AccessToken
Bei Verwendung der OIDC-Authentifizierung können Sie das Zugriffstoken des aktuellen Benutzers abrufen, um in dessen Namen auf Ressourcen zuzugreifen.
$Roles
Die Rollen des Aufrufers des Skripts.
Struktur des $UAJob-Objekts
Beachten Sie, dass Eigenschaften null sein können. DateTime-Objekte werden in der UTC-Zeitzone zurückgegeben.
Abrufen des Benutzers, der ein Skript gestartet hat
Sie können den Namen des Benutzers, der das Skript gestartet hat, mithilfe der Variable UAJob abrufen
Prüfen, ob ein Job manuell ausgeführt wurde
Sie können mithilfe der Eigenschaften Schedule und Trigger prüfen, ob ein Job manuell ausgeführt wurde.
Präferenzvariablen
Präferenzvariablen können für ein Skript, während der Ausführung eines Jobs und auf globaler Ebene konfiguriert werden. Dazu gehören:
DebugPreference
ErrorActionPreference
InformationPreference
ProgressPreference
VerbosePreference
WarningPreference
Die Präferenzvariablen haben eine Rangfolge. Die folgende Liste ist nach Rangfolge geordnet. Wenn ein Skript beispielsweise die Variable $DebugPreference manuell festlegt, überschreibt dies den im Eigenschaftendialog des Skripts festgelegten Wert.
Skript
Ausführungsdialog oder Invoke-PSUScript
Skripteigenschaften
Globale Einstellungen
API
Siehe auch
Zuletzt aktualisiert
War das hilfreich?