Freigeben über


Verwalten von Azure-Ressourcen mit Invoke-AzRestMethod

Invoke-AzRestMethod ist ein Azure PowerShell-Cmdlet, das in Az PowerShell-Modulversion 4.4.0 eingeführt wurde. Sie können benutzerdefinierte HTTP-Anforderungen mithilfe des Az-Kontexts an den Azure Resource Manager (ARM)-Endpunkt senden.

Dieses Cmdlet ist nützlich, wenn Sie Azure-Dienste für Features verwalten möchten, die noch nicht im Az PowerShell-Modul verfügbar sind.

Wie man Invoke-AzRestMethod verwendet

Beispielsweise können Sie den Zugriff auf azure Container Registry (ACR) nur für bestimmte Netzwerke zulassen oder den öffentlichen Zugriff verweigern. Ab Version 4.5.0 des Az PowerShell-Moduls ist diese Funktion im Az.ContainerRegistry PowerShell-Modulnoch nicht verfügbar. Es kann in der Zwischenzeit jedoch mit Invoke-AzRestMethod verwaltet werden.

Verwenden von „Invoke-AzRestMethod“ mit GET-Vorgängen

Im folgenden Beispiel wird die Verwendung des Cmdlets Invoke-AzRestMethod mit einem GET-Vorgang veranschaulicht:

$getParams = @{
  ResourceGroupName = 'myresourcegroup'
  ResourceProviderName = 'Microsoft.ContainerRegistry'
  ResourceType = 'registries'
  Name = 'myacr'
  ApiVersion = '2019-12-01-preview'
  Method = 'GET'
}
Invoke-AzRestMethod @getParams

Um maximale Flexibilität zu ermöglichen, sind die meisten Parameter für Invoke-AzRestMethod optional. Wenn Sie Jedoch Ressourcen innerhalb einer Ressourcengruppe verwalten, müssen Sie entweder die vollständige ID für die Ressource oder Parameter wie Ressourcengruppe, Ressourcenanbieter und Ressourcentyp bereitstellen.

Die Parameter ResourceType und Name können mehrere Werte annehmen, wenn Ressourcen angesprochen werden, die mehrere Namen erfordern. Um beispielsweise eine gespeicherte Suche in einem Log Analytics-Arbeitsbereich zu bearbeiten, sehen die Parameter wie das folgende Beispiel aus: -ResourceType @('workspaces', 'savedsearches') -Name @('my-la', 'my-search').

Das Cmdlet erstellt mithilfe einer Zuordnung, die auf der Position im Array basiert, die folgende Ressource: Id:'/workspaces/my-la/savedsearches/my-search'.

Mit dem Parameter APIVersion können Sie eine bestimmte API-Version verwenden, einschließlich der Vorschauversionen. Die unterstützten API-Versionen für Azure-Ressourcenanbieter finden Sie im azure-rest-api-specs GitHub repository.

Die Definition für die ACR-API-Version 2019-12-01-preview befindet sich an folgendem Speicherort: azure-rest-api-specs/specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/preview/.

Verwenden von „Invoke-AzRestMethod“ mit PATCH-Vorgängen

Sie können den öffentlichen Zugriff auf das vorhandene ACR namens myacr in der ressourcengruppe myresourcegroup mithilfe des Cmdlets Invoke-AzRestMethod deaktivieren.

Wenn Sie den Zugriff auf das öffentliche Netzwerk deaktivieren möchten, senden Sie einen PATCH-Aufruf an die API, der den Wert des Parameters publicNetwokAccess wie im folgenden Beispiel gezeigt ändert:

$patchParams = @{
  ResourceGroupName = 'myresourcegroup'
  Name = 'myacr'
  ResourceProviderName = 'Microsoft.ContainerRegistry'
  ResourceType = 'registries'
  ApiVersion = '2019-12-01-preview'
  Payload = '{ "properties": {
     "publicNetworkAccess": "Disabled"
     } }'
  Method = 'PATCH'
}
Invoke-AzRestMethod @patchParams

Die Payload-Eigenschaft ist eine JSON-Zeichenfolge, die den Pfad der zu ändernden Eigenschaft anzeigt.

Alle Parameter für diese API werden in der rest-api-spec- Datei beschrieben, die dieser API zugeordnet ist. Die spezifische Definition für den publicNetworkAccess-Parameter finden Sie in der JSON-Datei der Containerregistrierung für die API-Version 2019-12-01-preview.

Um nur den Zugriff auf die Registrierung von einer bestimmten IP-Adresse zuzulassen, muss die Nutzlast geändert werden, wie im folgenden Beispiel gezeigt:

$specificIpParams = @{
  ResourceGroupName = 'myresourcegroup'
  Name = 'myacr'
  ResourceProviderName = 'Microsoft.ContainerRegistry'
  ResourceType = 'registries'
  ApiVersion = '2019-12-01-preview'
  Payload = '{ "properties": {
      "networkRuleSet": {
      "defaultAction": "Deny",
      "ipRules": [ {
         "action": "Allow",
         "value": "24.22.123.123"
         } ]
      }
  } }'
  Method = 'PATCH'
}
Invoke-AzRestMethod @specificIpParams

Vergleich mit „Get-AzResource“, „New-AzResource“ und „Remove-AzResource“

Mit den cmdlets *-AzResource können Sie den REST-API-Aufruf an Azure anpassen, indem Sie den Ressourcentyp, die API-Version und die zu aktualisierenden Eigenschaften angeben. Die Eigenschaften müssen jedoch zuerst als PSObject erstellt werden. Dieser Prozess fügt eine zusätzliche Komplexitätsstufe hinzu und kann kompliziert werden.

Invoke-AzRestMethod bietet eine Möglichkeit zum Verwalten von Azure-Ressourcen. Wie im vorherigen Beispiel gezeigt, können Sie eine JSON-Zeichenfolge erstellen und diese zum Anpassen des REST-API-Aufrufs verwenden, ohne vorab PSObjects erstellen zu müssen.

Wenn Sie bereits mit den *-AzResource Cmdlets vertraut sind, können Sie sie weiterhin verwenden. Wir haben keine Pläne, unsere Unterstützung einzustellen. Mit Invoke-AzRestMethodhaben wir Ihrem Toolkit ein neues Cmdlet hinzugefügt.

Weitere Informationen