Freigeben über


Verwalten von Azure-Ressourcen mit Invoke-AzRestMethod

Invoke-AzRestMethod ist ein Azure PowerShell-Cmdlet, das in Az PowerShell-Modul Version 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.

Verwenden von Invoke-AzRestMethod

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

Verwenden von Invoke-AzRestMethod mit GET-Vorgängen

Im folgenden Beispiel wird die Verwendung des Invoke-AzRestMethod Cmdlets 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 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 ResourceType Parameter Name können mehrere Werte annehmen, wenn sie auf Ressourcen abzielen, die mehr als einen Namen erfordern. Wenn Sie beispielsweise eine gespeicherte Suche in einem Log Analytics-Arbeitsbereich bearbeiten möchten, sehen die Parameter wie im folgenden Beispiel aus: -ResourceType @('workspaces', 'savedsearches') -Name @('my-la', 'my-search')

Mithilfe einer Zuordnung basierend auf der Position im Array erstellt das Cmdlet die folgende Ressource: Id:'/workspaces/my-la/savedsearches/my-search'

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

Die Definition für die 2019-12-01-preview ACR-API-Version finden Sie am folgenden Speicherort: azure-rest-api-specification/specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/preview/.

Verwenden von Invoke-AzRestMethod mit PATCH-Vorgängen

Sie können den öffentlichen Zugriff auf die vorhandene ACR deaktivieren, die in der myacr Ressourcengruppe mit dem myresourcegroup Cmdlet benannt istInvoke-AzRestMethod.

Zum Deaktivieren des öffentlichen Netzwerkzugriffs müssen Sie einen PATCH-Aufruf an die API vornehmen, die den Wert des publicNetwokAccess Parameters ändert, wie im folgenden Beispiel gezeigt:

$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 parameter publicNetworkAccess finden Sie in der JSON-Datei der Containerregistrierung für die 2019-12-01-preview API-Version.

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 *-AzResource den Cmdlets 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 eine PSObjecterstellt 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 sie verwenden, um den REST-API-Aufruf anzupassen, ohne zuvor erstellen PSObjectszu müssen.

Wenn Sie bereits mit den *-AzResource Cmdlets vertraut sind, können Sie sie weiterhin verwenden. Wir haben keine Pläne, sie zu unterstützen. Mit Invoke-AzRestMethoddiesem Tool haben wir Ihrem Toolkit ein neues Cmdlet hinzugefügt.

Siehe auch