Powershell 从流中设置块Blob内容

Powershell 从流中设置块Blob内容,powershell,stream,zip,deflatestream,az,Powershell,Stream,Zip,Deflatestream,Az,Set-AzStorageBlobContent获取要上载到云的文件位置。有没有办法将System.IO.Stream传递给PowerShell中的块Blob?我找到了方法。它有点简单,这要归功于 在中,我们能够将zip文件的内容直接提取到Azure存储块blob中,而无需在本地提取文件。下面的示例可以增强,以递归方式上载zip文件中的所有条目 Import-Module -Name Az $ZipArchive = [System.IO.Compression.ZipFile]::OpenRe

Set-AzStorageBlobContent获取要上载到云的文件位置。有没有办法将System.IO.Stream传递给PowerShell中的块Blob?

我找到了方法。它有点简单,这要归功于

在中,我们能够将zip文件的内容直接提取到Azure存储块blob中,而无需在本地提取文件。下面的示例可以增强,以递归方式上载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);