Powershell не дожидается завершения загрузки - PullRequest
0 голосов
/ 08 мая 2020

Я новичок в Powershell, и я уже столкнулся с довольно неприятной проблемой, которая, вероятно, связана с моей неопытностью. Google оказался полезным в дальнейшем.

Контекст:

Я выполняю сценарий Powershell на сервере Azure Windows через настраиваемые расширения. Сценарий выполняет серию последовательных шагов, каждый шаг превращается в функцию. Функции вызываются одна за другой. Одна из функций скачивает большой sh (да нет такого слова) ZIP-файл. Следующая функция затем пытается разархивировать содержимое файла в каталог, но постоянно терпит неудачу с ошибкой «файл не существует», что означает, что заархивированный файл, к которому шаг пытается получить доступ, не существует. Это неверно, потому что предыдущий шаг загрузки файла действительно загружает заархивированный файл, и я могу доказать это с помощью команды Test-Path. Это почти как если бы Powershell СЛИШКОМ БЫСТРЫЙ (если есть) и не ждет, пока шаг загрузки файла полностью завершится sh перед выполнением функции распаковки.

Причина, по которой я говорю, что функция кажется слишком быстрой потому что, если я включаю команду Start-Sleep в режим сна в течение 20 секунд после инструкции загрузки файла, функция распаковки работает нормально, поскольку она может найти загруженный заархивированный файл.

Очевидная проблема с командой Start-Sleep это то, что, если мой zip-файл biggi sh загружается больше секунды ... бум, снова к проблеме.

Вопрос: ЕСТЬ ЛИ СПОСОБ, КОТОРЫЙ Я МОГУ СКАЗАТЬ POWERSHELL ПОДДЕРЖАТЬ ФУНКЦИЮ, КОТОРАЯ ЗАГРУЖАЕТ ФАЙЛ, ПОЛНОСТЬЮ ЗАВЕРШЕНА ПЕРЕД ВЫПОЛНЕНИЕМ СЛЕДУЮЩЕЙ ФУНКЦИИ?

Вот пример того, как выглядит мой скрипт :

function DoSomething {
    param (
        #some params
    )

    #do something...
}


function Download-File {
    param (
        #some params
    )

    #FILE DOWNLOAD FUNCTION THAT DOWNLOADS A BIGGISH ZIP FILE
    #......................I am using Azure CLI to download the zipped file from BLOB storage

    az storage blob download --account-name $storageAccountName --container-name $storageContainerName --name $fullyQualifiedFileName --file .\$fileName --auth-mode login;
}

function Unzip-File {
    param (
        #some params
    )

    #ATTEMPT TO UNZIP FILE
}

function DoSomethingElse {
    param (
        #some params
    )

    #do something...
}

DoSomething;
Download-File;
Unzip-File; #This guy seems too quick, eager to access the zipped file downloaded in the preceeding step...whilst the preceeding step is not done downloading
DoSomethingElse;


#PLEASE HELP :(
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...