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.
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:
- Der im Cmdlet-Parameter angegebene Wert.
- Der in den Sessionvoreinstellungen angegebene Wert.
- Der im vom Benutzer ausgewählten Profil der OCI-Konfigurationsdatei unter
~/.oci/config
angegebene Wert.
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
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
.
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.
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.
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.
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.
#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.
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
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. Sie können entweder einen Streamparameter oder den entsprechenden Dateiparameter übergeben, jedoch nicht beide.
OutputFile
bezeichnet. 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.
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
Der auf Client-Ebene festgelegte Wert hat Vorrang vor dem auf Anwendungsebene festgelegten Wert.
Realm-spezifische Endpunktvorlagen auf Anwendungsebene aktivieren:
OCI_REALM_SPECIFIC_SERVICE_ENDPOINT_TEMPLATE_ENABLED
auf true
. Beim booleschen Wert wird die Groß-/Kleinschreibung nicht beachtet.
Realm-spezifische Endpunktvorlagen auf Clientebene aktivieren:
$NamespaceName = Get-OCIObjectStorageNamespace -CompartmentId $CompartmentId -UseRealmSpecificEndpoint -Debug
Ein vollständiges Beispiel finden Sie im Beispiel CreateBucketUsingRealmSpecificEndpoint_ObjectStorage auf GitHub.