Як встановити каталог за замовчуванням PowerShell?


108

Чи є спосіб змінити місце за замовчуванням PowerShell?

Як встановити робочий каталог за замовчуванням PowerShell?


1
Ось як ви можете зробити це з допомогою редагування ярлика: stackoverflow.com/questions/18726981 / ...
помилковий Філософ

@BlunderingPhilosopher Це для git shell ..?
Вівек Чавда

@VivekChavda Yep
Філософ Блуд,

Відповіді:


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

179

Створіть профіль 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
Це дуже поганий спосіб зробити це, тому що якщо у вас є, наприклад, сценарій збірки (наприклад, скрипт для побудови візуальної студії) і ви хочете запустити команду ps, тоді робочий каталог команди буде встановлений у цьому місці, і це в основному розбийте всі сценарії, використовуючи powerhell, якpowershell -File "myscript.ps1"
Сантос

2
Якщо це поганий варіант, чи є кращий / безпечніший спосіб зробити це?
Adam_G

4
Дозвольте себе виправити. Під час написання скриптів повноважень, наприклад, для складання, завжди використовуйте параметр -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прапорця назад і назад.
неонграу

Працює шарм. Дякую.
Ясер Шайх

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"
Сантос


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) відкриється в каталозі, в якому ви зараз працюєте:

set-location (get-location). шлях



0

Це рішення встановлює поточну робочу папку на місце, де знаходиться сценарій. Не забудьте розмістити на початку сценарію або принаймні перед тим, як спробувати використовувати команду, що спирається на шлях до місця розташування.

Set-Location (Split-Path $MyInvocation.MyCommand.Path)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.