Delen via


Azure-resources beheren met Invoke-AzRestMethod

Invoke-AzRestMethod is een Azure PowerShell-cmdlet die is geïntroduceerd in Az PowerShell-moduleversie 4.4.0. Hiermee kunt u aangepaste HTTP-aanvragen indienen bij het AZURE Resource Manager-eindpunt (ARM) met behulp van de Az-context.

Deze cmdlet is handig als u Azure-services wilt beheren voor functies die nog niet beschikbaar zijn in de Az PowerShell-module.

Invoke-AzRestMethod gebruiken

U kunt bijvoorbeeld alleen toegang tot Azure Container Registry (ACR) toestaan voor specifieke netwerken of openbare toegang weigeren. Vanaf Az PowerShell-moduleversie 4.5.0 is die functie nog niet beschikbaar in de Az.ContainerRegistry PowerShell-module. Het kan echter in de tussentijd worden beheerd met Invoke-AzRestMethod.

Invoke-AzRestMethod gebruiken met GET-bewerkingen

In het volgende voorbeeld ziet u hoe u de cmdlet Invoke-AzRestMethod gebruikt met een GET-bewerking:

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

Om maximale flexibiliteit mogelijk te maken, zijn de meeste parameters voor Invoke-AzRestMethod optioneel. Wanneer u echter resources binnen een resource-groep beheert, moet u de volledige ID opgeven voor de resource of parameters zoals resource-groep, resource-provider en resource-type.

De parameters ResourceType en Name kunnen meerdere waarden aannemen bij het instellen van resources waarvoor meer dan één naam is vereist. Als u bijvoorbeeld een opgeslagen zoekopdracht in een Log Analytics-werkruimte wilt bewerken, zien de parameters eruit als in het volgende voorbeeld: -ResourceType @('workspaces', 'savedsearches') -Name @('my-la', 'my-search').

Met behulp van een toewijzing op basis van de positie in de matrix maakt de cmdlet de volgende resource: Id:'/workspaces/my-la/savedsearches/my-search'.

Met de parameter APIVersion kunt u een specifieke API-versie gebruiken, inclusief preview-versies. De ondersteunde API-versies voor Azure Resource-providers vindt u in de azure-rest-api-specs GitHub-opslagplaats.

U vindt de definitie voor de 2019-12-01-preview ACR API-versie op de volgende locatie: azure-rest-api-specs/specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/preview/.

Gebruik maken van Invoke-AzRestMethod met PATCH-bewerkingen

U kunt openbare toegang tot de bestaande ACR met de naam myacr uitschakelen in de myresourcegroup resourcegroep met behulp van de cmdlet Invoke-AzRestMethod.

Als u de toegang tot het openbare netwerk wilt uitschakelen, moet u een PATCH--aanroep naar de API maken waarmee de waarde van de parameter publicNetwokAccess wordt gewijzigd, zoals wordt weergegeven in het volgende voorbeeld:

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

De eigenschap Payload is een JSON-tekenreeks met het pad van de eigenschap die moet worden gewijzigd.

Alle parameters voor deze API worden beschreven in het rest-api-spec--bestand dat is gekoppeld aan deze API. De specifieke definitie voor de parameter publicNetworkAccess vindt u in het JSON-bestand containerregister voor de 2019-12-01-preview API-versie.

Als u alleen toegang tot het register vanaf een specifiek IP-adres wilt toestaan, moet de nettolading worden gewijzigd, zoals wordt weergegeven in het volgende voorbeeld:

$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

Vergelijking met Get-AzResource, New-AzResource en Remove-AzResource

Met de *-AzResource cmdlets kunt u de REST API-aanroep naar Azure aanpassen door het resourcetype, de API-versie en de eigenschappen op te geven die moeten worden bijgewerkt. De eigenschappen moeten echter eerst worden gemaakt als een PSObject. Dit proces voegt een extra complexiteitsniveau toe en kan ingewikkeld worden.

Invoke-AzRestMethod biedt een manier om Azure-resources te beheren. Zoals in het vorige voorbeeld wordt weergegeven, kunt u een JSON-tekenreeks bouwen en deze gebruiken om de REST API-aanroep aan te passen zonder dat u vooraf een PSObjectshoeft te maken.

Als u al bekend bent met de *-AzResource cmdlets, kunt u deze blijven gebruiken. We hebben geen plannen om te stoppen met het ondersteunen van hen. Met Invoke-AzRestMethodhebben we een nieuwe cmdlet toegevoegd aan uw toolkit.

Zie ook