Как исправить «Указанный ресурс не существует. HTTP Status Code: 404» Ошибка при использовании Start-AzStorageFileCopy - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь скопировать файлы из одного каталога файлов в Azure Storage Explorer в подкаталог каталога исходных файлов.

Изначально я хотел использовать AZcopy для копирования файлов, но Azcopy не поддерживает копирование файлов в подкаталог.

Итак, сейчас я иду по пути Powershell, используя Start-AzStorageFileCopyкомандлет.

Ниже приведен полный сценарий

$context = New-AzStorageContext -StorageAccountName "store1" -SasToken "? 
sv=2015-12-11&si=aaa-15D97F9B09D&sr=s&sig=xxx"

# Since the file name has date, you can specify which date to be deleted.
# In this sample, we try to delete the files' name contains previous 
datemonth string eg. "201901"

$pattern =[datetime]::Today.AddMonths(-2).ToString('yyyyMM')
$ShareName = "aaa"
$SourcePath = "Test/Temp_Clean_up_test_Folder"
$ArchivePath = "Test/Temp_Clean_up_test_Folder/Archive/"+        
[datetime]::Today.AddMonths(-2).ToString('yyyyMM')


Get-AzStorageFile -ShareName "aaa" -Path "Test/Temp_Clean_up_test_Folder" - 
Context $context | Get-AzStorageFile | where {($_.GetType().Name -eq 
"CloudFile") -and ($_.Name -like "*$pattern*")} | Start-AzStorageFileCopy - 
DestFilePath $ArchivePath -DestShareName "aaa" -SrcFile {$_} -DestContext 
$Context 

Я ожидаю, что файлы будут скопированы, но я получаю следующую ошибку.

Start-AzStorageFileCopy: указанныйресурс не существует.Статус HTTP> Код: 404 - Сообщение об ошибке HTTP: указанный ресурс не существует.В строке: 18 символов: 201 + ... ttern * ")} | Start-AzStorageFileCopy -DestFilePath $ ArchivePath -DestS> ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~ + CategoryInfo: CloseError: (:) [Start-AzStorageFileCopy],> StorageException + FullyQualifiedErrorId:> StorageException, Microsoft.WindowsAzure.Commands.Storage.File.Cmdlet.StartAzur> eStorageFileCopyCommand

Start-AzStorageFileCopy: указанный ресурс не существует. HTTP-состояние 40: код HTTP> Код: HTTP-статус 40: код HTTP:>Сообщение об ошибке: указанный ресурс не существует. В строке: 18 char: 201 + ... ttern * ")} |Start-AzStorageFileCopy -DestFilePath $ ArchivePath -DestS> ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: CloseError: (:) [Start-AzStorageFileCopy],> StorageException + FullyQualifiedErrorId:> StorageException, Microsoft.WindowsAzure.Commands.Storage.File.Cmdlet.StartAzur> eStorageFileCopyCommand

ПРИМЕЧАНИЯ:

Каталог назначения уже существует.

Исходные файлы существуют (я проверял вывод перед использованием Start-azStorageFileCopy Cmdlet)

Я добавил

-DefaultProfile $Context 

в конец сценария, надеясь, что это решит проблему, но он вернул ту же ошибку.

1 Ответ

0 голосов
/ 25 января 2019

Пожалуйста, попробуйте следующий код:

$context = New-AzStorageContext -StorageAccountName "xxx" -SasToken "xxx"

$pattern =[datetime]::Today.AddMonths(-2).ToString('yyyyMM')
$sharename = "aaa"
$sourcepath = "Test/Temp_Clean_up_test_Folder"
$archivepath = "Test/Temp_Clean_up_test_Folder/Archive/"+[datetime]::Today.AddMonths(-2).ToString('yyyyMM')

# add the following code to create the archive directory, if it does not exist.
# New-AzStorageDirectory -Context $context -ShareName $sharename -Path $archivepath

 $files = Get-AzStorageFile -ShareName $sharename -Path $sourcepath -Context $context | Get-AzStorageFile | where {($_.GetType().Name -eq "CloudFile") -and ($_.Name -like "*$pattern*")}

 foreach($s1 in $files){ 

 Start-AzStorageFileCopy -SrcShareName $sharename -SrcFilePath (join-path $sourcepath $s1.name) -DestShareName $sharename -DestFilePath (join-path $archivepath $s1.name) -Context $context
}

Обратите внимание, что перед копированием в него убедитесь, что путь к архиву существует. если он не существует, вы можете использовать следующий код для его создания:

New-AzStorageDirectory -Context $context -ShareName $sharename -Path $archivepath
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...