在我们的 VSTS 发布管道中,我们想要调用一个 powershell 脚本,该脚本为我的 Azure 函数之一添加函数密钥(使用密钥管理 rest API)。
我根据这篇文章创建了一个脚本:https : //www.markheath.net/post/managing-azure-function-keys
Param(
[string] [Parameter(Mandatory=$true)] $ResourceGroup,
[string] [Parameter(Mandatory=$true)] $AppName,
[string] [Parameter(Mandatory=$true)] $FunctionName,
[string] [Parameter(Mandatory=$true)] $KeyName,
[string] [Parameter(Mandatory=$true)] $KeyValue
)
function getAuthenticationToken([string]$appName, [string]$resourceGroup)
{
$user = az webapp deployment list-publishing-profiles -n $appName -g $resourceGroup `
--query "[?publishMethod=='MSDeploy'].userName" -o tsv
$pass = az webapp deployment list-publishing-profiles -n $appName -g $resourceGroup `
--query "[?publishMethod=='MSDeploy'].userPWD" -o tsv
$pair = "$($user):$($pass)"
$encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($pair))
$jwt = Invoke-RestMethod -Uri "https://$appName.scm.azurewebsites.net/api/functions/admin/token" -Headers @{Authorization=("Basic {0}" -f $encodedCreds)} …Run Code Online (Sandbox Code Playgroud) 我使用服务主体作为 azure cli 的登录项。此服务主体的角色是“所有者”。
我正在尝试运行:
az ad app list
Run Code Online (Sandbox Code Playgroud)
和
az ad app create --display-name "Test application 2"
Run Code Online (Sandbox Code Playgroud)
并得到错误:
当前用户注册应用程序需要目录权限。有关如何配置,请参阅“ https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-create-service-principal-portal ”。原始错误:权限不足,无法完成操作。
我应该为这个服务主体分配什么角色?
我想THIS-THING-HERE.onmicrosoft.com使用 Azure CLI检索租户名称。我真的无法在文档中找到。
编辑:当我调用 azure 帐户列表时,我没有在提供的域中获得用户名,因为我使用公司电子邮件登录:
[
{
"cloudName": "AzureCloud",
"id": "46ee2f65-7112-4c96-ad0a-3ff6ca22a615",
"isDefault": true,
"name": "Visual Studio Professional",
"state": "Enabled",
"tenantId": "1caf5d6b-58cb-40e6-88b3-eb9ab9c0c010",
"user": {
"name": "a.krajniak@avanade.com",
"type": "user"
}
},
{
"cloudName": "AzureCloud",
"id": "1efd84d6-173f-42cc-80db-7b2c17eb0edd",
"isDefault": false,
"name": "Microsoft Azure Enterprise",
"state": "Enabled",
"tenantId": "c48d02ad-7efd-4910-9b51-ebb7a4b75379",
"user": {
"name": "a.krajniak@avanade.com",
"type": "user"
}
}
]
Run Code Online (Sandbox Code Playgroud) 我正在尝试自动化一些我们的 BAT 脚本,为此我们的脚本需要知道每个 VMSS 实例的私有 IP(实例没有公共 IP)。
有没有办法使用 azure cli 查询特定 VMSS 下所有实例的私有 IP。我尝试了 LB 和 VMSS 的几个命令,但还没有找到解决方案。
az vmss show -g <rg> -n <vmss>
az vmss list-instances -g <rg> -n <vmss>
az vmss nic list-vm-nics -g <rg> --vmss-name <vmss> --ids <id>
az network lb address-pool list -g <rg> --lb-name <lb>
az vmss list-instance-connection-info -g <rg> -n <vmss>
Run Code Online (Sandbox Code Playgroud)
任何帮助都是非常可观的,我不是在寻找 powershell。
我正在使用 Azure PowerShell 从 azure DevOps 部署 ARM 模板,如下所示。
这是订阅级部署。我得到低于错误。
术语“Get-AzSubscription”不被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。
Install-Module -Name Az -AllowClobber -Scope CurrentUser
Import-Module Az
$context = Get-AzSubscription -SubscriptionId xxxxxxxx
Set-AzContext $context
New-azdeployment -Name "SKL" -Location westeurope -TemplateFile .\delegatedResourceManagement.json -TemplateParameterFile .\delegatedResourceManagement.parameters.json
Run Code Online (Sandbox Code Playgroud)
日志:
##[section]Starting: Azure PowerShell script: InlineScript
==============================================================================
Task : Azure PowerShell
Description : Run a PowerShell script within an Azure environment
Version : 3.153.0
Author : Microsoft Corporation
Help : https://docs.microsoft.com/azure/devops/pipelines/tasks/deploy/azure-powershell
==============================================================================
##[command]Import-Module -Name C:\Modules\azurerm_6.7.0\AzureRM\6.7.0\AzureRM.psd1 -Global
##[command]Clear-AzureRmContext -Scope Process
##[command]Disable-AzureRmContextAutosave -ErrorAction Stop
##[command]Add-AzureRMAccount -ServicePrincipal …Run Code Online (Sandbox Code Playgroud) 我需要在管道中使用 bash 命令从 Azure 容器注册表 (ACR) 获取最新的映像标签,并使用该标签进行容器部署。以下是我可以使用 Azure cli 找到的内容:
$ az acr repository show-tags --name myacr --repository myrepo --top 1
Run Code Online (Sandbox Code Playgroud)
然而,这返回了我最旧的标签。
如何从 ACR 存储库获取最新推送的标签?
我正在尝试myapp.PublishSettings使用 Azure CLI将 .Net Core 应用程序发布到 Azure ,但找不到执行此操作的命令
我认为它可能与az webapp update但我看不到在哪里可以输入我的 PublishSettings 阅读官方文档
我正在使用 VS Code,为了在编写 azure cli 脚本时获得一些智能感知,我将所有内容都放在一个.azcli文件中。我现在的问题是如何从 powershell 终端执行该文件?此外,是否可以在这样的脚本中使用参数,例如:
az servicebus topic create -g $resourceGroup -n $topicName --namespace-name $namespace
Run Code Online (Sandbox Code Playgroud)
是否可以调用一个azcli类似于上面的文件并$resourceGroup, $topicName, $namespace从 powershell 提供 as 参数?
我对 Powershell 有点陌生,我正在尝试制作一个脚本,该脚本从 Azure 资源组(包括标签)获取所有数据并将输出导出到 CSV。
据我所知,有几种方法可以做到,AzureCLI、AzureRM(Powershell) 和 Az(Powershell)。
示例 1:此“单行脚本”完成工作,但需要输入实际标签,而不是从 Azure 自动检索
$resourceGroupList = Get-AzResourceGroup | select-Object -Property ResourceGroupName,Location,ResourceId,ProvisioningState,@{N='Enviroment (Tag)'; E={$_.Tags.Enviroment}} ,@{N='Ownership (Tag)'; E={$_.Tags.Ownership}}
$resourceGroupList | export-csv test.csv -NoTypeInformation
Run Code Online (Sandbox Code Playgroud)

我发现的另一种方法是使用 AzureCLI
$resourceGroupList = az group list --query "[].{ResourceGroupName:name,Location:location,ResourceType:type,provisioningState:properties,Tags:tags,ResourceGroupID:id}" -o json | convertfrom-json
$resourceGroupList | Export-Csv test.csv -NoTypeInformation
Run Code Online (Sandbox Code Playgroud)

我真的很纠结数组以及如何将它们格式化为以示例 1 的格式导出到 CSV。
任何帮助/想法将不胜感激!
谢谢!
有人熟悉这个问题吗?https://github.com/Azure/cli中的示例不适用于自托管 github 运行器,看起来是这样az is missing
gitaction.yml
name: auzure-deployment
on:
push:
branches: [ main ]
jobs:
myjob:
runs-on: [self-hosted, linux]
steps:
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- uses: azure/CLI@v1
with:
azcliversion: 2.0.72
inlineScript: |
az account list
Run Code Online (Sandbox Code Playgroud)
错误
Runner group name: 'Default'
Machine name: '98de1add3979'
GITHUB_TOKEN Permissions
Prepare workflow directory
Prepare all required actions
Getting action download info
Download action repository 'azure/login@v1'
Download action repository 'azure/CLI@v1'
0s
Run azure/login@v1
Error: Az CLI Login failed. Please …Run Code Online (Sandbox Code Playgroud)