Установить содержимое блоб блоба из потока

Set-AzStorageBlobContent принимает местоположение файла для загрузки в облако. Есть ли способ передать System.IO.Stream в блочный блоб в PowerShell?

1 ответ

Я разобрался как. это довольно просто, и спасибо, https://microsoft.github.io/AzureTipsAndTricks/blog/tip76.html.

Он смог извлечь содержимое zip-файла непосредственно в блочный блок хранилища Azure без необходимости извлечения файлов локально. Этот приведенный ниже пример может быть улучшен для рекурсивной загрузки всех записей в zip-файле.

Import-Module -Name Az
$ZipArchive = [System.IO.Compression.ZipFile]::OpenRead("C:\...\temp.zip");
$ZipEntry = $ZipArchive.Entries[0]
$DeflateStream = $ZipEntry.Open();
$storageAccountName= 'storageAccountName' 
$containerName= 'containerName'
Get-AzSubscription | Select-Object -First 1 | Set-AzContext 
$StorageAccount = Get-AzStorageAccount -ResourceGroupName ResourceGroupName  | Where-Object{$_.StorageAccountName -match $storageAccountName}
$StorageContext = New-AzStorageContext -StorageAccountName $StorageAccount.StorageAccountName -StorageAccountKey (Get-AzStorageAccountKey -ResourceGroupName $StorageAccount.ResourceGroupName -Name $StorageAccount.StorageAccountName | select -First 1 ).Value
$Container = Get-AzStorageContainer -Name $containerName -Context $StorageContext
$BlockBlob = $Container.CloudBlobContainer.GetBlockBlobReference("Temp/temp.pdf")
$BlockBlob.UploadFromStream($DeflateStream);
Другие вопросы по тегам