Запуск сценария powershell с gsutil cp для GCP показывает прогресс загрузки на нескольких строках - PullRequest
1 голос
/ 12 апреля 2019

У меня есть простой скрипт powershell, который запускается из планировщика заданий в моей системе Win'2008R2, который в основном просто выполняет следующую команду:

gsutil -o GSUtil: parallel_composite_upload_component_size = 0 cp -L C: \ logs \ log1.txt C: \ архив \ *. Zip gs: // temp

Я использую Start-Transcript для записи вывода в файл results.log. Проблема в том, что при загрузке zip-файлов в gcp он продолжает записывать ход выполнения в нескольких строках после каждых 64 КБ во время загрузки:

Resuming upload for file://E:\db\db1.zip
Uploading   gs://temp/db1.zip:             0 B/1.20 GiB
Uploading   gs://temp/db1.zip:             98.75 MiB/1.20
Uploading   gs://temp/db1.zip:             98.81 MiB/1.20
...and keeps repeating this until it uploads the entire 1.20 GB.

Поскольку файл results.log отправляется группе людей по электронной почте, я не нуждаюсь в них, чтобы увидеть весь этот мусор. Достаточно показать только одну строку с конечным размером файла.

Когда я запускаю команду или скрипт из командной строки Windows (или из встроенного PowerShell), используя: powershell.exe -file c: \ scripts \ upload.ps1 , тогда он работает, как и ожидалось, показывая прогресс на одной строке:

Resuming upload for file://E:\db\db1.zip
Uploading   gs://temp/db1.zip:             1.20 GiB/1.20 GiB

Раньше, когда я выполнял ту же команду без параметра '-o GSUtil: parallel_composite_upload_component_size = 0', он показывал мне тот же длинный вывод, но как только я добавил это в gsutil, я подумал, что это нормально, так как он не повторяется прогресс больше на связке строк в командной строке PS. Так происходит только когда я запускаю скрипт из планировщика заданий.

Есть идеи, почему это происходит и как я могу обойти это?

1 Ответ

1 голос
/ 13 апреля 2019

В репозитории gsutil есть запрос открытой функции, выпуск # 481 , для отключения счетчика хода выполнения, когда вывод направлен на что-то, что не является интерактивным терминалом.

...