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 PSObjects
i 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-AzRestMethod
har vi lagt till en ny cmdlet i verktygslådan.
Se även
Azure PowerShell