我正在开发一个新的powershell脚本,以便从特定容器下载任何blobs,问题是由于安全原因,因为我不想在纯文本中粘贴azure帐户密钥。因此,我使用'ConvertTo-SecureString'命令实现了解决方案,但问题仍然存在,因为当我创建到blob的连接字符串时,出现一条消息说:"服务器未能验证请求。确保包含签名的授权头的值是正确的。HTTP状态代码403 - HTTP Error"。
在纯文本的关键,我能够正确地创建连接字符串,然后列出和下载所有blobs从容器。我尝试了其他解决方案,例如'$ Credential= New-Object System.Management.Automation.PSCredential ('$ShareUser, $SharePassword ')'但是还有其他问题与输入不是有效的base64字符串有关。
您知道如何避免此问题并使用Azure存储帐户创建安全连接字符串吗?
致以最诚挚的问候和感谢
这是我的powershell脚本的一部分
$SecurePassword= Read-Host -AsSecureString | ConvertFrom-SecureString
$SecurePassword | Out-File -FilePath C:test_blobpass_file.xml
$ConfigFile= 'C:Users\config_file.xml'
IF (Test-Path) {
[xml]$Config= Get-Content $ConfigFile
[string] $Server = $Config.Config.Server;
[string] $SharePassword = $Config.Config.SharePassword;
} ELSE
{
write-host "File do not exists: $ConfigFile"
}
#BlobStorageInformation
$StorageAccountName='test_acc'
$Container='test'
$DestinationFolder= 'C:Usersuser1Blobs'
$Context = New-AzStorageConext -StorageAccountName $StorageAccountName -StorageAccountKey $SharePassword
#List of Blobs
$ListBlob=@()
$ListBlob+= Get-AzStorageBlob -context $Context -container $Container | Where-Object {$_.LastModified -lt (Get-Date).AddDAys(-1)}
当您有az powershell时,为什么要维护密码文件或手动输入存储密钥?只需登录使用az powershell,设置订阅和享受!
$ResourceGroupName = "YOURRESOURCEGROUPNAME"
$StorageAccountName = "YOURSTORAGEACCOUNTNAME"
$ContainerName = "YOURCONTAINERNAME"
$LocalPath = "D:Temp"
Write-Output 'Downloading Content from Azure blob to local...'
$storageKey = (Get-AzStorageAccountKey -ResourceGroupName $ResourceGroupName -AccountName $StorageAccountName).value[0]
$storageContext = New-AzStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $storageKey
$blobs = Get-AzStorageBlob -Container $ContainerName -Context $storageContext
foreach($blob in $blobs)
{
Get-AzStorageBlobContent -Container $ContainerName -Context $storageContext -Force -Destination $LocalPath -Blob $blob.Name
}
Write-Output 'Content Downloaded Successfully !!!'