Я использую этот код в функции локального монтирования зашифрованного контейнера (используя VeraCrypt для письма I
) и информировать пользователя, если он был успешным. После успешного монтирования с использованием Start-Process
Test-Path
в цикле всегда терпит неудачу, хотя тот же Test-Path возвращает True
, если его попробовали в другой открытой консоли. Закончив скрипт и снова запустив Test-Path 'I:\'
, он возвращает True
.Test-Path не обнаруживает только что смонтированный том
Почему Test-Path не видит вновь установленный том?
# mount I:\
Start-Process $veraCrypt '/q /v C:\Users\myuser\container.tc /tc /l I'
# wait 60seconds for mounting
for ($i = 0; $i -lt 60; $i++)
{
# if I mounted, do other things
if (Test-Path 'I:\')
{
"mounted!"
break;
}
else
{
# if not yet mounted, wait
"not yet... $($i)/60"
Start-Sleep -Seconds 1
}
}
Я бы удалил цикл for ... поставил 'start-sleep -minutes 1' перед тем, как я проверил путь и посмотрю, работает ли он. – Kiran
Есть ли какая-то особая причина, почему вы запускаете '$ veraCrypt' асинхронно? Если нет, я бы рекомендовал использовать 'Start-Process -Wait' или (еще лучше) оператор вызова (' & '). –
@AnsgarWiechers работает с -Wait. Хотелось запустить асинхронно, чтобы запустить другие задачи в фоновом режиме, но я найду другой путь. –