Azure Powershell , Azure CLI и AzCopy - это три разные вещи, вам не следует смешивать их вместе.
Если вы хотите использовать powershell для загрузки файла с субъектом службы, после создания регистрации приложения, пожалуйста, получите значения для входа в систему , затем создайте новый секретный ключ приложения .
В вашей учетной записи хранения достаточно роли Contributor
, но вы должны заметить, что на самом деле Contributor
не имеет разрешения на прямой доступ к BLOB-объекту, он просто позволяет получить контекст хранилища. учетную запись, затем используйте контекст для доступа к BLOB-объекту, чтобы получить прямой доступ к BLOB-объекту, нам понадобится Storage Blob Data Owner/Contributor
, как указано в комментарии.
Затем используйте приведенный ниже скрипт (Get-Credential
в другом ответе - интерактивный способ, здесь - неинтерактивный способ, обычно мы используем принцип службы неинтерактивным способом для автоматизации)
$azureAplicationId ="<Application-ID>"
$azureTenantId= "<Tenant-ID>"
$azurePassword = ConvertTo-SecureString "<Application-secret>" -AsPlainText -Force
$psCred = New-Object System.Management.Automation.PSCredential($azureAplicationId , $azurePassword)
Connect-AzAccount -Credential $psCred -TenantId $azureTenantId -ServicePrincipal
$context = (Get-AzStorageAccount -ResourceGroupName <group-name> -Name <storageaccount-name>).Context
Set-AzStorageBlobContent -Container <container-name> -File <localfile-path> -Blob <blob-name> -Context $context