Erweiterte Konzepte

In diesem Abschnitt werden PowerShell-SDK-Konzepte behandelt.

In diesem Abschnitt werden PowerShell-SDK-Konzepte behandelt.

Sessionvoreinstellungen verwalten

Die OCI-Module für PowerShell unterstützen die Verwendung von Umgebungsvariablen in einer PowerShell-Session zur Angabe von Werten für einige optionale allgemeine Parameter. Diese Umgebungsvariablen können direkt in der PowerShell-Session oder mit dem Cmdlet Set-OCIClientSession konfiguriert werden. Diesen Umgebungsvariablen zugewiesene Werte werden nur in der PowerShell-Session, in der sie festgelegt sind, für API-Aufrufe verwendet.

Umgebungsvariablen direkt aus PowerShell heraus festlegen

Mit den folgenden Umgebungsvariablen können Sie Werte für einige Parameter angeben, die von den OCI-Modulen für PowerShell verwendet werden:
Cmdlet-Parameter Umgebungsvariablenname Hinweis
Region OCI_PS_REGION Wenn kein Wert angegeben wird, wird der Regionswert aus dem vom Benutzer bevorzugten Profil verwendet.
Profile OCI_PS_PROFILE Wenn kein Wert angegeben wird, wird das DEFAULT-Profil verwendet.
ConfigFile OCI_PS_CONFIG Wenn kein Wert angegeben wird, wird die Konfigurationsdatei unter ~/.oci/config verwendet.
NoRetry OCI_PS_NORETRY Wenn kein Wert angegeben wird, wird die Standardwiederholungsstrategie für Wiederholungsversuche verwendet.
TimeOutInMillis OCI_PS_TIMEOUT Wenn kein Wert angegeben wird, wird der Standardwert von 100.000 Millisekunden (100 Sekunden) verwendet.
AuthType OCI_PS_AUTH Wenn kein Wert angegeben wird, wird der in der Konfigurationsdatei definierte API-Schlüssel verwendet.

So legen Sie beispielsweise die Region fest:

PS /> $Env:OCI_PS_REGION="us-phoenix-1"

Umgebungsvariablen mit Cmdlets festlegen

Mit den Cmdlets "Set-OCIClientSession" und "Get-OCIClientSession" können Sie die Umgebungsvariablen der Sessionvoreinstellung festlegen und abrufen.

Set-OCIClientSession

Dieses Cmdlet legt die Voreinstellungen für Region, Profile und Config-Datei für die PowerShell-Session über die oben aufgeführten Umgebungsvariablen fest.

Hinweis

Importieren Sie OCI.PSModules.Common, bevor Sie das folgende Beispiel ausführen.
PS /> Set-OCIClientSession -RegionId "us-ashburn-1" -Profile "Test" -Config "~/.oci/testconfig"
 
RegionId     Profile Config
--------     ------- ------
us-ashburn-1 Test    ~/.oci/testconfig

Um eine Umgebungsvariable für Sessionvoreinstellungen zu entfernen, führen Sie das Cmdlet Clear-OCIClientSession mit den entsprechenden Parametern aus.

Get-OCIClientSession

Das Cmdlet Get-OCIClientSession im allgemeinen Modul wird verwendet, um die Sessionvoreinstellungswerte abzurufen, die für die allgemeinen Parameter aus der aktuellen PowerShell-Session festgelegt wurden.

PS /> Get-OCIClientSession                                                                    
 
RegionId     Profile Config
--------     ------- ------
us-ashburn-1 Test

Parameterpriorität

Beim Auswerten von Parametern befolgen die OCI-PowerShell-Module diese Prioritätsreihenfolge:

  1. Der im Cmdlet-Parameter angegebene Wert.
  2. Der in den Sessionvoreinstellungen angegebene Wert.
  3. Der im vom Benutzer ausgewählten Profil der OCI-Konfigurationsdatei unter ~/.oci/config angegebene Wert.
Hinweis

Die OCI-PowerShell-Module verwenden das DEFAULT-Profil als Fallback-Profil. Jeder Wert, der nicht explizit für ein bestimmtes Profil definiert ist, wird aus dem DEFAULT-Profil übernommen.

Historienspeicher

Standardmäßig geben OCI-Cmdlets den Antwortbody des zugrunde liegenden REST-API-Vorgangs aus. Der Historienspeicher stellt Benutzern eine PowerShell-Variable zur Verfügung, mit der OCI-Cmdlet-Aufrufe und ihre vollständigen API-Antworten von OCI-Services geprüft werden können.
Hinweis

Jede PowerShell-Session ruft ihren eigenen Historienspeicher ab.

Mit dem Historienspeicher können Sie:

  • Antwortobjektwerte des vorherigen Cmdlet im nächsten Cmdlet verwenden
  • Die vollständige API-Antwort, einschließlich der Antwortheader prüfen, wie z.B. die Verwendung von E-Tags für optimistische Nebenläufigkeit oder des OpcNextPage-Headers für Paginierung
  • Cmdlet-Aufrufsequenzen für Diagnosezwecke prüfen

Der Historienspeicher ist als Oci.PSModules.Common.Cmdlets.CmdletHistory.OCICmdletHistoryStore-Objekt in einer PowerShell-Variable namens $OCICmdletHistory gekapselt.

Weitere Informationen finden Sie im Historienspeicherbeispiel auf GitHub.

Historienspeichereigenschaften

In diesem Abschnitt werden die Eigenschaften beschrieben, die in dem in $OCICmdletHistory gespeicherten Historienspeicherobjekt enthalten sind.

   TypeName: Oci.PSModules.Common.Cmdlets.CmdletHistory.OCICmdletHistoryStore
                
                Name         MemberType Definition
                ----         ---------- ----------
                Entries      Property   Oci.PSModules.Common.Cmdlets.CmdletHistory.OCICmdletHistory[] Entries {get;}
                LastResponse Property   psobject LastResponse {get;}
                Size         Property   int Size {get;}

Größe

Gibt die maximale Anzahl von Befehlen an, die im Historienspeicher gespeichert werden können. Der Standardwert ist 20. Gültige Werte liegen zwischen 1 und 100.000 (einschließlich). Um die Größe des Historienspeichers zu ändern, verwenden Sie Set-OCICmdletHistory.

Hinweis

Es wird empfohlen, die Historiengröße auf ein Minimum zu beschränken, um die Speicherauslastung zu begrenzen.

Einträge

Sammlung von Oci.PSModules.Common.Cmdlets.CmdletHistory.OCICmdletHistory-Objekten, die indexierten Zugriff auf die gespeicherte Historie ermöglichen.

Das Oci.PSModules.Common.Cmdlets.CmdletHistory.OCICmdletHistory-Objekt hat die folgenden Eigenschaften:

Name Typ Beschreibung
StartTime System.DateTime Startzeit der Cmdlet-Ausführung.
EndTime System.DateTime Endzeit der Cmdlet-Ausführung.
Command System.Management.Automation.InvocationInfo Beschreibt, wie und wo dieser Befehl aufgerufen wurde.
Response System.Management.Automation.PSObject Ausgabeobjekt, das vom Cmdlet zurückgegeben wird.

LastResponse

Ein System.Management.Automation.PSObject-Objekt, das die letzte OCI-Cmdlet-Antwort in einer PowerShell-Session kapselt.

Historienspeicher-Cmdlets

Das Oci.PSModules.Common-Modul stellt die folgenden Cmdlets für die Arbeit mit dem Historienspeicher bereit. Siehe GitHub-Beispiel.

Get-OCICmdletHistory

Ruft die Cmdlet-Historie ab, die in der aktuellen PowerShell-Session gespeichert ist.

Set-OCICmdletHistory

Legt Eigenschaften des Historienspeichers fest.

Clear-OCICmdletHistory

Löscht die Cmdlet-Historie, die in der aktuellen PowerShell-Session gespeichert ist.

Paginierung

OCI-Cmdlets, die Listen-API-Vorgänge aufrufen, können Ergebnisse paginieren, sodass Sie die verfügbaren Ergebnisse in Batches abrufen können (automatisch nach Paginierungstoken), bis keine weiteren Datensätze mehr verfügbar sind.

Hinweis

Die Beispiele in diesem Thema rufen den ListImages-Vorgang im Compute-Service ab. Importieren Sie OCI.PSModules.Core, bevor Sie die Beispiele in diesem Abschnitt ausprobieren.

Erste Seite der Ergebnisse abrufen

Das Standardverhalten eines Cmdlets, das Paginierung unterstützt, besteht darin, nur die erste Seite der Ergebnisse abzurufen, wenn es ohne Angabe des -Page-Parameters aufgerufen wird.

Beispiel: Um die erste Seite der verfügbaren Compute-Images abzurufen, rufen Sie Get-OCIComputeImagesList mit Ihrer Compartment-ID auf:

PS /> Get-OCIComputeImagesList -CompartmentId $Env:CompartmentId | Measure-Object
 
Count             : 100

Im Beispiel oben wird der -Page-Parameter implizit auf NULL gesetzt.

Hinweis

Die maximale Anzahl von Ergebnissen pro Seite wird vom Service definiert und kann in der Service-API-Referenz gefunden werden.

Ergebnisse begrenzen

Der -Limit-Parameter gibt die maximale Anzahl von Ergebnissen an, die pro Seite zurückgegeben werden.

In diesem Beispiel wird die maximale Anzahl der pro Seite zurückgegebenen Ergebnisse auf 5 gesetzt:

PS /> Get-OCIComputeImagesList -CompartmentId $Env:CompartmentId -Limit 5 | Measure-Object                                       
 
Count             : 5

Nächste Seite der Ergebnisse abrufen

Mit dem -Page-Parameter wird die nächste Seite der Ergebnisse abgerufen. Dafür wird das Paginierungstoken aus dem "opc-next-page"-Antwortheader, der in der vorherigen Cmdlet-Antwort enthalten ist, übergeben.

Hinweis

Mit dem Historienspeicher können Sie die vorherige Cmdlet-Antwort abrufen.

Dieses Beispiel zeigt, wie die verbleibenden Ergebnisse aus einem vorherigen paginierten Aufruf abgerufen werden können. Dafür wird die Eigenschaft $OCICmdletHistory.LastResponse.OpcNextPage aus dem Historienspeicher als Argument an den -Page-Parameter übergeben:

PS /> Get-OCIComputeImagesList -CompartmentId $Env:CompartmentId -Page $OCICmdletHistory.LastResponse.OpcNextPage | Measure-Object
 
Count             : 100

Alle Ergebnisse abrufen

OCI-Cmdlets, die Paginierung unterstützen, können automatisch paginieren und Ergebnisse von allen verfügbaren Seiten abrufen. Lassen Sie das Cmdlet die Paginierung durchführen, indem Sie den Switch-Parameter -All beim Ausführen des Cmdlets übergeben.

PS /> Get-OCIComputeImagesList -CompartmentId $Env:CompartmentId -All | Measure-Object                                            
 
Count             : 293

Wartende und asynchrone Aufrufe

Die meisten Oracle Cloud Infrastructure-Ressourcen, wie z.B. Compute-Instanzen, haben Lebenszyklen. In vielen Fällen soll der Befehl warten, bis eine Ressource oder eine Arbeitsanforderung einen bestimmten Status erreicht oder ein Timeout überschritten wird, bevor weitere Aktionen ausgeführt werden. Sie können eine Ressource abfragen, um ihren Status zu bestimmen.

OCI-PowerShell-Module bieten Warteparameter, die es Ihrem Cmdlet ermöglichen, zu warten, bis eine Ressource einen gewünschten Status erreicht. Ein Cmdlet mit Warteparametern kann blockiert aufgerufen werden, was bedeutet, dass es wartet, bis ein gewünschter Status erreicht ist oder ein Timeout überschritten wird. Wartende abstrahieren die Polling-Logik, die Sie sonst hinzufügen müssten, bevor Sie weitere Aktionen für eine Ressource oder eine Arbeitsanforderung ausführen können.

Beispiel: Wenn Sie LaunchInstance im Compute-Service aufrufen, enthält der Antwortheader eine work-request-id. Die OCI-PowerShell-Module verwenden diese ID, wenn Sie den Parameter -WaitForStatus angeben. Dadurch wird Ihr Skript erst dann fortgesetzt, wenn die Arbeitsanforderung erfolgreich ist.

Beispiel:
#Create a new compute instance and wait for the instance work request to succeed or fail, 
#polling every 60 seconds and attempting 20 times max
$ComputeInstance = New-OCIComputeInstance -LaunchInstanceDetails $LaunchDetails -WaitForStatus Succeeded,Failed -MaxWaitAttempts 20 -WaitIntervalSeconds 60

Warteparameter

In diesem Abschnitt werden die Parameter für asynchrone Aufrufe beschrieben.

WaitForStatus

Geben Sie diesen Parameter an, um die Aktion auszuführen, und warten Sie dann, bis die Ressource den gewünschten Lebenszyklusstatus erreicht. Sie können mehrere Status angeben, die zurückgegeben werden sollen, wenn die Ressource einen der gewünschten Status erreicht.

WaitIntervalSeconds

Prüfen Sie jedes "WaitIntervalSeconds"-Intervall, um zu erfahren, ob die Ressource einen der gewünschten Status erreicht hat. Der Standardwert für diesen Parameter ist 30 Sekunden.

MaxWaitAttempts

Maximale Anzahl von Versuchen, die unternommen werden, bis die Ressource einen der gewünschten Status erreicht. Der Standardwert für diesen Parameter ist 3 Versuche.

Hinweis

Derzeit akzeptieren OCI-Cmdlets keine maximale Wartezeit für Cmdlets, die Wartende unterstützen. Sie können diese Einschränkung umgehen, indem Sie die Werte von MaxWaitAttempts und/oder WaitIntervalSeconds kontrollieren.

Nach erfolgreichem Abschluss gibt das Cmdlet das empfangene ursprüngliche Antwortobjekt zurück. Bei einem Fehler (z.B. der gewünschte Status wird von der Ressource innerhalb der angegebenen Grenzwerte nicht erreicht) wird eine Ausnahme ausgelöst, die die Fehlermeldung enthält.

Streameingaben und -ausgaben

Einige OCI-Cmdlets interagieren mit APIs, die Streamtypobjekte (Beispiel: InvokeFunctions-Vorgang im Functions-Service) akzeptieren oder zurückgeben. Diese OCI-Cmdlets akzeptieren Parameter, die Dateien in einem Dateipfad implizit in Streams und zurück konvertieren können.
Hinweis

Sie können entweder einen Streamparameter oder den entsprechenden Dateiparameter übergeben, jedoch nicht beide.
Der Dateieingabeparameter wird nach dem entsprechenden Streameingabeparameter benannt, und der Dateiausgabeparameter wird als OutputFile bezeichnet.
Hinweis

Ein Beispiel finden Sie im Hilfetext für das Cmdlet Invoke-OCIFunctionsInvokeFunction unter OCI.PSModules.Functions.

Dieses Beispiel auf GitHub zeigt, wie Sie mit Streams arbeiten können.

Logging

Um die Fehlerbehebung zu erleichtern, unterstützen OCI-PowerShell-Module neben Fehlermeldungen auch das Logging von Meldungen auf debug- und verbose-Ebene in der Konsole. Dieses Feature wurde in die PowerShell-Standardparameter Debug und Verbose integriert.

Übergeben Sie den Parameter -Debug oder -Verbose im Cmdlet-Aufruf, um Logmeldungen in der Konsole anzuzeigen.

Beispiel:

PS /> Get-OCIComputeImagesList -CompartmentId $Env:CompartmentId -Limit 1 -Verbose
 
#More Verbose
PS /> Get-OCIComputeImagesList -CompartmentId $Env:CompartmentId -Limit 1 -Debug

Authentifizieren mit Instanz-Principals

Instanz-Principals ist ein IAM-Servicefeature, mit dem Instanzen zu autorisierten Akteuren (oder Principals) werden können, die Aktionen für Serviceressourcen ausführen können. Jede Compute-Instanz hat eine eigene Identität und authentifiziert die Zertifikate, die ihr hinzugefügt werden. Diese Zertifikate werden automatisch erstellt, Instanzen zugewiesen und rotiert, sodass Sie keine Zugangsdaten an die Hosts verteilen und sie rotieren müssen.

Hinweis

Weitere Informationen zu Instanz-Principals finden Sie unter Services von einer Instanz aufrufen.

Um die Instanz-Principal-Authentifizierung aus OCI-Cmdlets zu aktivieren, autorisieren Sie die Instanz, Aufrufe auszuführen, und legen Sie den AuthType-Parameter fest. Beispiel:

PS /> Get-OCIIdentityRegionsList -AuthType InstancePrincipal

Dedizierte Endpunkte

Dedizierte Endpunkte sind die Endpunktvorlagen, die vom Service für eine bestimmte Realm auf Clientebene definiert werden. Mit den OCI-Modulen für PowerShell können Sie die Verwendung dieses Realm-spezifischen Endpunktvorlagenfeatures sowohl auf Anwendungsebene als auch auf Clientebene aktivieren. Dieses Feature ist standardmäßig deaktiviert.
Hinweis

Der auf Client-Ebene festgelegte Wert hat Vorrang vor dem auf Anwendungsebene festgelegten Wert.

Realm-spezifische Endpunktvorlagen auf Anwendungsebene aktivieren:

Um das Feature "Realm-spezifische Endpunktvorlagen" auf Anwendungsebene zu aktivieren, setzen Sie die Umgebungsvariable OCI_REALM_SPECIFIC_SERVICE_ENDPOINT_TEMPLATE_ENABLED auf true.
Hinweis

Beim booleschen Wert wird die Groß-/Kleinschreibung nicht beachtet.

Realm-spezifische Endpunktvorlagen auf Clientebene aktivieren:

Um das Feature für Realm-spezifische Endpunktvorlagen auf Clientebene zu aktivieren, setzen Sie das Flag wie folgt in Code:
$NamespaceName = Get-OCIObjectStorageNamespace -CompartmentId $CompartmentId -UseRealmSpecificEndpoint -Debug

Ein vollständiges Beispiel finden Sie im Beispiel CreateBucketUsingRealmSpecificEndpoint_ObjectStorage auf GitHub.