Хранилище файлов Azure - список содержимого каталога - чтение имен файлов - PullRequest
0 голосов
/ 19 октября 2018

Это звучит как самая простая задача, все, что я пытаюсь сделать, это перечислить содержимое подкаталога в файловом хранилище общего ресурса Azure, мне удалось получить объект " CloudFileDirectory "Однако, изо всех сил пытаясь прочитать его содержимое.

Я ограничен в написании этого решения в PowerShell, поэтому использую модуль PS под названием «AzureRM», как показано ниже:

# Install AzureRM module & check if installed:
Install-Module -Name "AzureRM"
Get-Module -Name AzureRM -List | select Name,Version

# Import module in session:
Import-Module AzureRM

# Connect/sign-on to Azure account (interactive login):
Connect-AzureRmAccount

# Get reference to Storage account:
$storageAcct = Get-AzureRmStorageAccount -ResourceGroupName "myRSG" -AccountName "myCloudStorage"

#Get directory object:
$objDir = Get-AzureStorageFile -Context $storageAcct.Context -ShareName "myShare" -Path "myFolder1"

Здесь язастрял с этим ( $ objDir ) объектом, который в основном является WindowsAzure.Storage.File.CloudFileDirectory объектом, но не действуеткак обычный объект каталога, так как он не содержит коллекцию (см. вывод ниже):

$objDir.GetType().FullName           #-> "WindowsAzure.Storage.File.CloudFileDirectory" object
$objDir | % {$_.GetType().FullName}  #-> "WindowsAzure.Storage.File.CloudFileDirectory" object

По сути, мне нужно прочитать имена файлов в этой подпапке.Я буду признателен за любую помощь.ТИА.

1 Ответ

0 голосов
/ 19 октября 2018

(согласно комментарию Гаурава) дополнительно |Get-AzureStorageFile решил проблему и вернул ожидаемый результат, т. Е. Теперь я получаю коллекцию / массив ( System.Object [] ), через который я прошел итерацию, чтобы получить отдельные имена файлови их соответствующие размеры, вот код + вывод и типы объектов, которые я сейчас получаю:

#Get directory object:
$objDir = Get-AzureStorageFile -Context $storageAcct.Context -ShareName "myShare" -Path "myFolder1" | Get-AzureStorageFile
$objDir.GetType().FullName            #-> "System.Object[]" object
$objDir  | % {$_.GetType().FullName}  #-> "WindowsAzure.Storage.File.CloudFile / CloudDirectory" objects
$objDir  | % {$_} | select Name,StreamMinimumReadSizeInBytes

Вывод

Name      StreamMinimumReadSizeInBytes
----      ----------------------------
file.txt                       4194304
file1.txt                      4194304
foo.txt                        4194304
...