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


109

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

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


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 запускаться с правами администратора.


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


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.



0

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

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


0

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

Set-Location (Split-Path $MyInvocation.MyCommand.Path)
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.