#powershell #testing #path
#powershell #тестирование #путь
Вопрос:
Вау. Должно быть, сегодня я принимаю дурацкие таблетки. Я использую простой тестовый путь в скрипте, и я не могу понять, почему он не вводит блок IF, когда файл присутствует. Я запускаю тот же код в окне командной строки ISE, и он работает нормально:
$allfile="c:usersrs02130desktopsonarRulesjsrulesall.xlsx"
Write-Output "Testing $allfile"
if (Test-Path $allfile)
{
Write-Output "In If"
try
{
Write-Output "Removing $allfile"
Remove-Item $allfile -Force -ErrorAction Stop
Write-Output "Removed $allfile"
}
catch
{
Write-Error "Error removing $allfile"
exit 1
}
}
Очевидно, я упускаю что-то фундаментальное, но я этого не понимаю. Полный исходный скрипт имеет аналогичный код в другом регионе, и он работает нормально.
Комментарии:
1. Дважды проверьте имя файла, тем более, что вы указали, что аналогичный код работает нормально.
2. Какой результат
Get-Item $allfile
дает?3. Если я запускаю Get-Item $allfile внутри скрипта, он выдает ошибку «Get-Item: не удается найти путь ‘C:UsersRS02130DesktopSonarRulesjsrulesall.xlsx «потому что его не существует». Если я запускаю его вне скрипта, он работает нормально. Файл определенно есть. Я скопировал как путь из проводника Windows и вставил путь непосредственно в скрипт…
4. Да. Я вставил «Get-ChildItem * .xlsx» в скрипт, и он не показывает файл. Я смотрю в проводнике или запускаю ту же команду в PS> и она там. Поди разберись. Проблема безопасности? На моем собственном рабочем столе?
5. Теперь он отображается в Get-ChildItem, но тестовый путь по-прежнему не выполняется…
Ответ №1:
Понял это. Комбинация подстановочного знака неправильного файла, который удалял файл до того, как я добрался до него дальше, и асинхронный характер Get-ChildItem против Узел записи, который заставил меня думать, что файл был там, когда его не было.