Hantera Azure-resurser med Invoke-AzRestMethod
Invoke-AzRestMethod är en Azure PowerShell-cmdlet som lanserades i version 4.4.0 av Az PowerShell-modulen. Det gör att du kan göra anpassade HTTP-begäranden till Azure Resource Manager-slutpunkten (ARM) med hjälp av Az-kontexten.
Denna cmdlet ä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 exempelvis tillåta åtkomst till Azure Container Registry (ACR) endast för vissa nätverk eller neka offentlig åtkomst. Från och med Az PowerShell-modul version 4.5.0 är funktionen är inte tillgänglig än i Az.ContainerRegistry PowerShell-modulen. Men under tiden kan den hanteras med Invoke-AzRestMethod
.
Använda Invoke-AzRestMethod med GET-åtgärder
Följande exempel visar hur du använder Invoke-AzRestMethod
-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 maximal flexibilitet är de flesta av 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 de har resurser som kräver mer än ett namn som mål. 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 som baseras på positionen i matrisen skapar 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. De API-versioner som stöds för Azure Resource-providers finns på GitHub-lagringsplatsen för azure-rest-api-specs.
Du hittar definitionen för 2019-12-01-preview
ACR API-versionen på följande plats: 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 det befintliga ACR:et med namnet myacr
i resursgruppen myresourcegroup
med hjälp av cmdleten Invoke-AzRestMethod
.
Om du vill inaktivera offentlig nätverksåtkomst 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 för den egenskap som ska ändras.
Alla parametrar för detta API beskrivs i filen rest-api-spec som är associerad med detta API.
Den specifika definitionen för parametern publicNetworkAccess finns i JSON-filen för containerregistret för 2019-12-01-preview
API-versionen.
Om du bara vill tillåta åtkomst till registret från en viss IP-adress måste nyttolasten ändras på det sätt som visas i 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 *-AzResource
-cmdletarna kan du anpassa REST API-anropet till Azure genom att ange resurstypen, API-versionen och de egenskaper som ska uppdateras. Men egenskaperna måste först skapas som ett 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 förskapa någon PSObjects
.
Om du redan är van vid *-AzResource
-cmdletarna kan du fortsätta att 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
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för