Пути Powershell отключены (настройки повреждены?)

#powershell

#powershell

Вопрос:

Я использую Windows 10×64 с полными обновлениями на ноутбуке Lenovo P70 с 32 ГБ оперативной памяти.

Моя команда работает над сложным решением для powershell 5.1. У нас есть окно powershell, которое открывает множество других окон powershell, которые запускают некоторый SQL. Еще несколько дней назад все работало нормально. Внезапно PowerShell 5.1 начинает вставлять «C:windowssystem32 «в качестве значения для pwd.path, где мы находим текстовые файлы, которые будут прочитаны. Мы буквально получили бы пути типа «C:windowssystem32 » когда мы обращались к переменной pwd.path.

Здесь используется его:

 $fr = [System.IO.Path]::Combine( ((pwd).Path), ($folderName) );
  

Весь сценарий PS1 теперь выходит из строя впечатляющим образом. Я просмотрел свои профили powerhsell, и все они пустые (максимум несколько комментариев). Я решил попробовать установить Powershell 6, и после двух незначительных изменений все заработало нормально. Дело в том, что моя команда разработала довольно сложное скриптовое решение для PS1, и мы собираемся применить его в действии. Сейчас не время переключаться с Powersell5 на Powersell6. Кроме того, я пытался жестко прописать нужный нам путь в Powersell5, и это сработало. Дело в том, что эти скрипты действительно должны иметь возможность запускаться из соответствующей папки, которая меняется. На идентичном компьютере моего коллеги все работает нормально.

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

Кто-нибудь знает, что случилось с моим powerhsell? Кто-нибудь знает, как это исправить, кроме запуска Powersell6?

Заранее спасибо!

Комментарии:

1. по моему опыту, $PWD «текущий рабочий каталог» … странно ненадежен. вам следует выбрать фактический каталог, который вы хотите использовать… и используйте это. что-то вроде $PSScriptRoot или даже жесткое кодирование местоположения.

2. Из вашего вопроса неясно, относятся ли пути к местоположению скрипта или к текущему directoy (powershell и .net не всегда совпадают в этом) Почему вы не используете Join-Path ? Вы используете powershell с повышенными правами?

3. Ваш код пытается запускать процессы от имени администратора start-process powershell -verb runas ? Для меня это всегда открывается в C:WindowsSystem32 .

4. @AdminOfThings это маршрут, которым мы пользуемся, и он только недавно сломался.

5. @LotPings мы используем относительные пути. Для Powershell повышены права доступа.