#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 повышены права доступа.