Как установить каталог PowerShell по умолчанию?

109

Есть ли способ изменить расположение PowerShell по умолчанию?

Как установить рабочий каталог PowerShell по умолчанию?

Youbloodywombat
источник
1
Вот как это можно сделать, отредактировав ярлык: stackoverflow.com/questions/18726981/…
Blundering Philosopher
@BlunderingPhilosopher Это для git shell ..?
Вивек Чавда
@VivekChavda Yep
Blundering Philosopher

Ответы:

61

Вы можете указать каталог для открытия при запуске PowerShell:

powershell.exe -NoExit -command "& {Set-Location $env:systemroot}"

Просто используйте его в своем ярлыке.

Или используйте профиль, чтобы задать начальный каталог.

Питер Хандорф
источник
5
Для PS Core:pwsh.exe -WorkingDirectory C:\YourLocation\Goes\Here
Сергей Зыков
«C: \ Program Files \ PowerShell \ 6 \ pwsh.exe» -WorkingDirectory D: \ test
cem kaan
180

Создайте профиль PowerShell следующим образом.

  1. Запустите PowerShell от имени администратора и выполните следующую команду:

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

    Это позволит PowerShell запускать локальные сценарии и сценарии, загруженные из Интернета, которые были подписаны. Подробнее об этой команде читайте в документации .

  2. В своей Documentsпапке найдите папку с именем WindowsPowerShellклассической оболочки PowerShell или PowerShellболее новой версии PowerShell Core. Если его не существует, ничего страшного; просто создай это.

  3. Создайте новый файл с именем profile.ps1в WindowsPowerShellпапке (или PowerShellдля PowerShell Core).
  4. Откройте profile.ps1и добавьте следующую команду, чтобы установить рабочий каталог по умолчанию:

    Set-Location C:\my\default\working\directory
  5. Откройте новое окно PowerShell ... изменения должны были вступить в силу.

Джереми Даньоу
источник
1
Я пробовал это, но получаю «profile.ps1 не может быть загружен, потому что выполнение скриптов отключено». Есть ли «безопасный» способ включить безопасные скрипты?
Джон Литтл
3
Запустите это: «Set-ExecutionPolicy -ExecutionPolicy RemoteSigned». Вы можете прочитать об этом здесь: technet.microsoft.com/en-us/library/ee176961.aspx. Он не позволяет запускать загруженные из Интернета сценарии, если они не поступают от доверенного источник.
LLL
7
Это действительно плохой способ сделать это, потому что если у вас есть, например, сценарий сборки (например, сценарий сборки Visual Studio), и вы хотите запустить команду ps, тогда рабочий каталог команды будет установлен в это место, поэтому он будет в основном сломать все скрипты с помощью powershell -File "myscript.ps1"
PowerShell,
2
Если это плохой вариант, есть ли лучший / более безопасный способ сделать это?
Adam_G
4
Позвольте мне поправиться. При написании сценариев PowerShell, например, для сборки, всегда используйте параметр -NoProfile, напримерpowershel -NoProfile -File "myscript.ps1"
Santhos
33

Я безуспешно пробовал приведенные выше ответы в Windows Server 2016 .

Но я обнаружил, что этот подход (он должен быть таким же для Windows 10) работает для меня.

  1. Начать сеанс PowerShell
  2. На панели задач щелкните правой кнопкой мыши и закрепите, чтобы сохранить ссылку там
  3. Снова щелкните правой кнопкой мыши значок на панели задач, а затем щелкните правой кнопкой мыши Windows PowerShell и выберите Свойства.
  4. Введите желаемый каталог в поле ввода Начать в: и нажмите ОК.
  5. Начать со значка на панели задач

Готово!

В том же диалоговом окне « Свойства » вы также можете изменить многие другие настройки, такие как шрифты, цвета, размеры, а также на вкладке « Ярлык » с помощью кнопки Advanced. Вы можете выбрать, будет ли этот сеанс PowerShell запускаться с правами администратора.

Neongrau
источник
5
Изменение рабочего каталога , кажется , не работать , когда вы проверяете Run as administratorв .lnkрасширенном меню. Похоже, решение здесь stackoverflow.com/questions/31622469/…
Santhos
Это странно, потому что здесь это работает. Просто протестировал с изменением каталога и переключением Run as aministratorфлажка вперед и назад.
neongrau
Работает шарм. Спасибо.
Ясир Шейх
12

Более простой способ установить каталог по умолчанию:

  1. Щелкните правой кнопкой мыши значок Windows PowerShell и закрепите его в меню «Пуск».
  2. Щелкните правой кнопкой мыши значок Windows PowerShell в меню «Пуск» и снова щелкните правой кнопкой мыши Windows PowerShell и выберите «Свойства» (не « Запуск от имени администратора и не Windows PowerShell ISE» ).

    Введите описание изображения здесь

    1. На вкладке « Ярлык » -> поле «Начать в» перейдите в место, в котором должен запускаться PowerShell.

    Введите описание изображения здесь

Антонио
источник
Ох, спасибо, мне нравится этот ответ. Помогло мне понять, почему и какой каталог был установлен по умолчанию. Я думаю, что это решение также немного снижает накладные расходы времени на загрузку профиля (не уверен, правда это или нет, но похоже).
Дженнингс
4

Помещение Set-Locationв ваш профиль безоговорочно изменит текущий рабочий каталог, что может иметь нежелательные последствия в отношении рабочего каталога для сценариев, которые вы выполняете через «запускать с помощью PowerShell».

Альтернативным решением является изменение рабочего каталога для .lnkфайлов на PowerShell, который обычно находится в %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell. Щелкните ссылку правой кнопкой мыши и измените рабочий каталог с %HOMEDRIVE%%HOMEPATH%на нужный каталог.

Леонард Брюнингс
источник
1
Изменение рабочего каталога , кажется , не работать , когда вы проверяете Run as administratorв .lnkрасширенном меню. Кажется, решение здесь stackoverflow.com/questions/31622469/…
Santhos
Это лучшее решение (по крайней мере, для меня).
Андерс Арпи
Вот почему в сценариях следует использовать такую -NoProfileопцию, как powershell -NoProfile -File "myscript.ps1"
Santhos
4

Введите это в PowerShell:

New-Item -path $profile -type file force

Он создает файл .ps1 в папке PowerShell. Откройте его и отредактируйте как:

Set-location C:\files

Готово

Перейдите по этой ссылке. Работает нормально.

Изменить начальный каталог PowerShell

Рочестер
источник
3

Вместо безоговорочного изменения рабочего каталога, как упоминалось в предыдущих ответах, вы можете написать простую функцию в профиле PowerShell, чтобы использовать ее Set-Locationдля быстрого изменения рабочего каталога при необходимости.

Проверьте ответ Джереми Даньоу, чтобы создать / изменить профиль PowerShell.

Добавьте функцию (ы) в свой профиль PowerShell:

function goto_this {set-location 'your\path\to\some\dir'}
function goto_that {set-location 'your\path to some\dir with space'}

Просто измените имя функции и указанную директорию. Использование кавычек в пути обязательно, если он содержит пробелы. Я стараюсь сохранить префикс, так goto_как он помогает запоминать имена функций.

Вы можете начать вводить текст, а goto_затем нажимать клавишу TAB, чтобы просмотреть все добавленные функции (не забудьте запустить новое окно PowerShell после добавления / изменения функций).

Сундхар
источник
1

Используя только командную строку, если файл уже существует, он будет добавлен к нему:

$(if (-Not (Test-Path ~\Documents\WindowsPowerShell\)){ mkdir ~\Documents\WindowsPowerShell\}) ; echo "Set-Location c:\THELOCATIONYOUWANT" >> ~\Documents\WindowsPowerShell\profile.ps1
Люк Энджел
источник
1

При этом, похоже, есть некоторая путаница в «рабочем каталоге» и «местоположении» PowerShell. Большинство людей здесь делают и говорят, что нужно изменить "местоположение" PowerShell. «Рабочий каталог» на самом деле другой. Вот статья это объясняется.

Для тех, кто не хочет читать статью: откройте PowerShell и используйте то, что говорят другие Set-Location "C:\some\directory". Обратите внимание, что ваш «рабочий каталог» по-прежнему находится там, где был открыт PowerShell. Либо, "~"либо в "%SYSTEMROOT%\system32"зависимости от того, работаете вы как администратор или нет. Чтобы проверить рабочий каталог, используйте [Environment]::CurrentDirectory.

Примечание: в статье автор предлагает проверить "рабочий каталог" с помощью этой команды:

\[Environment\]::CurrentDirectory

Я не уверен, работает ли это со старыми версиями PowerShell, но с PowerShell 5 (и более поздними версиями) вы должны использовать [Environment]::CurrentDirectory.

РейнджерГеоф
источник
1

Запись-вывод "Set-Location C: \" >> $ profile

Дэйв
источник
0

Сделайте это первой строкой в ​​вашем Profile.ps1, и PowerShell Core (pwsh) откроется в каталоге, в котором вы сейчас работаете:

установить-расположение (получить-расположение) .path

тедро
источник
0

Это решение устанавливает текущую рабочую папку в то место, где находится скрипт. Обязательно поместите в начало вашего скрипта или, по крайней мере, перед тем, как вы попытаетесь использовать команду, полагающуюся на путь местоположения.

Set-Location (Split-Path $MyInvocation.MyCommand.Path)
Ипсе
источник