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-AzRestMethod
hebben nu een nieuwe cmdlet toegevoegd aan uw toolkit.