У меня есть сценарий Windows PowerShell, выполняемый планировщиком задач Windows. Код powershell запускает исполняемую программу cli (java), которая создает собственный лог-файл, затем, когда мой сценарий powershell завершает работу, пытается переименовать файл и затем загрузить его на удаленный сервер. Тем не менее, я обнаружил, что он успешно загружает файл только при 3-м или 4-м выполнении и не уверен почему. История в планировщике задач не содержит подробностей относительно того, что могло произойти (блокировка файла?). Любые идеи о том, как я могу решить это? Вот основной пример того, что я делаю:
$old_log_name = "old_logfilename"
$new_log_name = "new_logfilename"
C:\path\to\my-java-program.exe -pass -some -options
Move-Item -Path $old_log_name -Destination $new_log_name
gsutil cp $new_log_name gs://cool-bucket-with-cf
Я уверен, что проблема в переименовании файла, а не в его загрузке, потому что это можно увидеть в проводнике Windows.
Должен ли я проверить, доступен ли файл для переименования или нет?
Редактировать (пересмотренный код основан на комментариях ниже):
$app_version = "4.5.7"
$now = get-date
$now = $now.ToString("yyyyMMddhhmm")
$old_log_name = "D:\myapp_$app_version.log"
$new_log_name = "D:\myapp_servername_$app_version.$now.log"
$arguments = "-a -c C:\myapp\config\Stage-$app_version.xml"
Start-Process C:\myapp\bin\4.5.7\myapp.exe -ArgumentList $arguments -NoNewWindow -Wait
Move-Item -Path $old_log_name -Destination $new_log_name
gsutil cp $new_log_name gs://path-to-mybucket