For the complete documentation index, see llms.txt. This page is also available as Markdown.

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.

Variablen werden in der Konfigurationsdatei variables.ps1 gespeichert.

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.

Dialogfeld Create Variable

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.

Dialogfeld für geheime Variablen

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

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

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

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

Erwägen Sie die Verwendung der Secret-Verwaltung außerhalb des Prozesses, wenn Sie den Tresor Az.KeyVault verwenden, um Assembly-Konflikte mit PowerShell Universal selbst zu vermeiden.

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.

Tresorauswahl für geheime Variablen

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.

Name
Typ
Beschreibung

$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.

Variable
Beschreibung
Typ

$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

$ConnectionId

Die HTTP-Kontext-Verbindungs-ID.

String

$SessionId

Die HTTP-Kontext-Sitzungs-ID.

String

$RequestId

Die HTTP-Kontext-Anfrage-ID.

String

$ClaimsPrincipal

Der Claims Principal des aktuellen Benutzers. Dies ist dasselbe Objekt, das rollenbasierten Zugriffsrichtlinien bereitgestellt wird.

ClaimPrincipal

Apps

Nachfolgend finden Sie Variablen, die zusätzlich zu den globalen Variablen in Apps verfügbar sind.

Name
Beschreibung
Typ

$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.

ClaimPrincipal

$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.

Name
Beschreibung

$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?