Hantera Azure resurser med Invoke-AzRestMethod

Invoke-AzRestMethod är en Azure PowerShell cmdlet som introducerades i Az PowerShell-modulversion 4.4.0. Det gör att du kan göra anpassade HTTP-begäranden till slutpunkten Azure Resource Manager (ARM) med hjälp av Az-kontexten.

Den här cmdleten är användbar när du vill hantera Azure tjänster för funktioner som ännu inte är tillgängliga i Az PowerShell-modulen.

Så här använder du Invoke-AzRestMethod

Du kan till exempel endast tillåta åtkomst till Azure Container Registry (ACR) för specifika nätverk eller neka offentlig åtkomst. Från och med Az PowerShell-modul version 4.5.0 är den funktionen ännu inte tillgänglig i Az.ContainerRegistry PowerShell-modulen. Det kan dock hanteras under tiden med .

Använda Invoke-AzRestMethod med GET-åtgärder

I följande exempel visas hur du använder cmdleten med en GET-åtgärd:

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

För att ge maximal flexibilitet är de flesta parametrarna för valfria. Men när du hanterar resurser i en resursgrupp måste du ange antingen det fullständiga ID:t för resursen eller parametrarna som resursgrupp, resursprovider och resurstyp.

Parametrarna och kan ta flera värden vid inriktning på resurser som kräver mer än ett namn. Om du till exempel vill ändra en sparad sökning i en Log Analytics arbetsyta ser parametrarna ut som i följande exempel: -ResourceType @('workspaces', 'savedsearches') -Name @('my-la', 'my-search').

Med hjälp av en mappning baserat på positionen i matrisen konstruerar cmdleten följande resurs: .

Med parametern kan du använda en specifik API-version, inklusive förhandsversioner. Api-versionerna som stöds för Azure Resursprovidrar finns på lagringsplatsen azure-rest-api-specs GitHub.

Du hittar definitionen för ACR API-versionen 2019-12-01-preview på följande plats: azure-rest-api-specs/specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/preview/.

Använda Invoke-AzRestMethod med PATCH-operationer

Du kan inaktivera offentlig åtkomst till den befintliga ACR som finns i resursgruppen genom att använda cmdlet.

Om du vill inaktivera åtkomsten till det offentliga nätverket måste du göra ett PATCH-anrop till API:et som ändrar värdet för parametern enligt följande exempel:

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

Egenskapen är en JSON-sträng som visar sökvägen till den egenskap som ska ändras.

Alla parametrar för det här API:et beskrivs i rest-api-spec-filen som är associerad med det här API:et. Den specifika definitionen för parametern publicNetworkAccess finns i JSON-filen container för api-versionen 2019-12-01-preview.

Om du bara vill tillåta åtkomst till registret från en specifik IP-adress måste nyttolasten ändras enligt följande exempel:

$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

Jämförelse med Get-AzResource, New-AzResource och Remove-AzResource

Med cmdletarna *-AzResource kan du anpassa REST API-anropet till Azure genom att ange resurstypen, API-versionen och egenskaperna som ska uppdateras. Egenskaperna måste dock skapas först som en . Den här processen lägger till ytterligare en nivå av komplexitet och kan bli komplicerad.

Invoke-AzRestMethod erbjuder ett sätt att hantera Azure resurser. Som du ser i föregående exempel kan du skapa en JSON-sträng och använda den för att anpassa REST API-anropet utan att behöva förskapa någon .

Om du redan är bekant med cmdletarna kan du fortsätta använda dem. Vi har inga planer på att sluta stödja dem. Med har vi lagt till en ny cmdlet i verktygslådan.

Se även

  • Get-AzResource
  • New-AzResource
  • Remove-AzResource