Dela via


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 Azure Resource Manager-slutpunkten (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 inte tillgänglig ännu i Az.ContainerRegistry PowerShell-modulen. Det kan dock hanteras under tiden med Invoke-AzRestMethod.

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

I följande exempel visas hur du använder cmdleten Invoke-AzRestMethod 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 Invoke-AzRestMethod 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 ResourceType och Name kan ta flera värden när du riktar in dig på resurser som kräver mer än ett namn. Om du till exempel vill ändra en sparad sökning på 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: Id:'/workspaces/my-la/savedsearches/my-search'.

Med parametern APIVersion kan du använda en specifik API-version, inklusive förhandsversioner. Api-versionerna som stöds för Azure-resursproviders finns i azure-rest-api-specs GitHub-lagringsplats.

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

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

Du kan inaktivera offentlig åtkomst till den befintliga ACR som heter myacr i resursgruppen myresourcegroup med hjälp av cmdleten Invoke-AzRestMethod.

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 publicNetwokAccess 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 Payload ä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 fil som är associerad med det här API:et. Den specifika definitionen för parametern publicNetworkAccess finns i JSON-filen containerregister för 2019-12-01-preview API-versionen.

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 resurstyp, API-version och vilka egenskaper som ska uppdateras. Egenskaperna måste dock skapas först som en PSObject. 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 skapa några PSObjectsi förväg.

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

Se även