Тестовый путь Powershell не работает?

#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 против Узел записи, который заставил меня думать, что файл был там, когда его не было.