如何指定任务';“用户身份”;池默认用户(管理员)";在azure批处理帐户中?

如何指定任务';“用户身份”;池默认用户(管理员)";在azure批处理帐户中?,azure,azure-cli,azure-batch,Azure,Azure Cli,Azure Batch,我正在尝试从Powershell脚本创建几个批处理任务,并查看如何指定用户标识。Dotnet核心API支持这种指定,但Azure CLI不支持这种指定 当我运行下面的脚本时,我从PowerShell脚本中得到一个错误,该错误表示没有足够的权限执行此操作: az batch account login -g $resourceGroup -n $batchAccountName az batch task create --job-id $BatchJobId ` --task-id "

我正在尝试从Powershell脚本创建几个批处理任务,并查看如何指定用户标识。Dotnet核心API支持这种指定,但Azure CLI不支持这种指定

当我运行下面的脚本时,我从PowerShell脚本中得到一个错误,该错误表示没有足够的权限执行此操作:

az batch account login -g $resourceGroup -n $batchAccountName 
az batch task create --job-id $BatchJobId `
    --task-id "DeployIdHere" `
    --command-line $cmdCommand `
    --account-name $batchAccountName `
    --debug `
    --verbose `
    --output table
我假设找到类似于
--elevation level Admin
的东西,但似乎我不知道它的共同点是什么。

您可以使用
--json file
标志创建一个任务,并在命令
az batch task create--job id myjobtest--json file.\task.json
中指定用户标识

有关格式,请参见

您还可以使用管理员添加多个任务。任务JSON文件如下所示:

{
    "id": "mytasktest123",
    "commandLine": "/bin/bash -c \"sudo ls\"",
    "waitForSuccess": true,
    "userIdentity": {
        "autoUser": {
          "elevationLevel": "admin",
          "scope": "pool"
        },
        "userName": null
      }
    }
结果

如果你需要进一步的帮助,请告诉我

这表示没有足够的权限执行此操作

当您使用
az批量帐户登录-g$resourceGroup-n$batchAccountName
登录时,它使用Auzre AD身份验证,它使用您使用
az登录的帐户的凭据

如果将命令与
--shared key auth
参数一起使用,则该命令将使用共享密钥身份验证,但您的帐户还需要执行
Microsoft.Batch/batchAccounts/listKeys/action
操作的权限。起初我认为
Reader
角色就足够了,但根据我的测试,它没有列出批处理帐户密钥的权限

因此,要解决此问题,您可以让
订阅/批处理帐户的
所有者
将您的用户帐户作为
所有者
贡献者
角色以
az登录
。导航到门户中的订阅/批处理帐户->
访问控制(IAM)
->
添加
->
添加角色分配
->搜索您的用户帐户(或服务负责人),将其添加为
所有者
/
参与者
角色,详细信息。然后使用清除本地缓存并再次运行
az批处理帐户登录-g$resourceGroup-n$batchAccountName
az批处理任务创建
将正常工作

如何在azure批处理帐户中指定任务的用户标识“池默认用户(管理员)”

方法是使用
--json file
参数,根据您的需求,在
.json
文件中使用
非管理员
管理员
指定
提升级别
,如下所示

batch.json
文件:

{
  "id": "task1",
  "commandLine": "bash -c 'echo hello'",
  "userIdentity": {
    "autoUser": {
      "scope": "task",
      "elevationLevel": "admin"
    }
  }
}
样本

az batch task create --job-id myjob --json-file C:\Users\joyw\Desktop\batch.json

您的解决方案节省了我的时间。非常感谢。