Azure-resources beheren met Invoke-AzRestMethod

Invoke-AzRestMethod is een Azure PowerShell-cmdlet die is geïntroduceerd in versie 4.4.0 van de Az-module van PowerShell. 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-module van PowerShell.

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 module Az.ContainerRegistry van PowerShell. De functie kan wel worden beheerd in de tijdelijke oplossing 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 u meer flexibiliteit te geven, zijn de meeste parameters voor Invoke-AzRestMethod optioneel. Wanneer u echter resources binnen een resourcegroep beheert, moet u de volledige id opgeven voor de resource of parameters, zoals resourcegroep, resourceprovider en resourcetype.

De parameters ResourceType en Name kunnen meerdere waarden hebben voor doelresources waarvoor meerdere namen nodig zijn. Als u bijvoorbeeld een opgeslagen zoekopdracht in een Log Analytics-werkruimte wilt bewerken, zien de parameters eruit zoals in het volgende voorbeeld: -ResourceType @('workspaces', 'savedsearches') -Name @('my-la', 'my-search').

Als u een toewijzing gebruikt op basis van de positie in de matrix, bouwt de cmdlet de volgende resource: Id:'/workspaces/my-la/savedsearches/my-search'.

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

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/.

Invoke-AzRestMethod gebruiken met PATCH-bewerkingen

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

Als u de openbare toegang tot het netwerk wilt uitschakelen, moet u een PATCH-aanroep van de API die de waarde van de parameter publicNetwokAccess wijzigt uitvoeren, 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. Deze bevat het pad van de eigenschap die moet worden gewijzigd.

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

Als u alleen toegang tot het register via een specifiek IP-adres wilt toestaan, moet de payload worden gewijzigd zoals wordt weergegeven in dit 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 tussen Get-AzResource, New-AzResource en Remove-AzResource

Met de *-AzResource-cmdlets kunt u de REST API-aanroep aanpassen aan Azure door het resourcetype, de API-versie en de eigenschappen op te geven die moeten worden bijgewerkt. De eigenschappen moet 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 deze vooraf hoeft te maken PSObjects.

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

Zie ook