Làm cách nào để bạn đặt thư mục mặc định của PowerShell?


108

Có cách nào để thay đổi vị trí mặc định của PowerShell không?

Làm cách nào để bạn đặt thư mục làm việc mặc định của PowerShell?


1
Đây là một cách bạn có thể thực hiện bằng cách chỉnh sửa phím tắt: stackoverflow.com/questions/18726981/…
Blundering Philosopher

@BlunderingPhiosystemher Đó là dành cho git shell ..?
Vivek Chavda

@VivekChavda Yep
Nhà triết học sai lầm

Câu trả lời:


61

Bạn có thể chỉ định thư mục để mở khi khởi động PowerShell:

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

Chỉ cần sử dụng nó trong phím tắt của bạn.

Hoặc sử dụng một cấu hình để đặt thư mục bắt đầu.


5
Đối với PS Core:pwsh.exe -WorkingDirectory C:\YourLocation\Goes\Here
Sergey Zykov

"C: \ Program Files \ PowerShell \ 6 \ pwsh.exe" -WorkingDirectory D: \ test
cem kaan

179

Tạo một cấu hình PowerShell như sau.

  1. Chạy PowerShell với tư cách quản trị viên và thực hiện lệnh sau:

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

    Điều này sẽ cho phép PowerShell chạy các tập lệnh cục bộ và các tập lệnh được tải xuống từ Internet đã được ký. Đọc thêm về lệnh này trong tài liệu .

  2. Trong Documentsthư mục của bạn , hãy tìm một thư mục được đặt tên WindowsPowerShellcho PowerShell cổ điển hoặc PowerShellcho PowerShell Core mới hơn. Nếu nó không tồn tại, đó là ok; chỉ cần tạo ra nó.

  3. Tạo một tệp mới có tên profile.ps1trong WindowsPowerShellthư mục (hoặc PowerShellcho PowerShell Core).
  4. Mở profile.ps1và thêm lệnh sau để đặt thư mục làm việc mặc định của bạn:

    Set-Location C:\my\default\working\directory
  5. Mở một cửa sổ PowerShell mới ... các thay đổi sẽ có hiệu lực.


1
Tôi đã thử điều này, nhưng nhận được "profile.ps1 không thể tải được vì tập lệnh đang chạy bị tắt". Có cách nào "an toàn" để kích hoạt các tập lệnh an toàn không?
John Little

3
Chạy cái này: "Set-ExecutionPolicy -ExecutionPolicy RemoteSigned" Bạn có thể đọc về nó tại đây: technet.microsoft.com/en-us/library/ee176961.aspx Nó không cho phép các tập lệnh đã tải xuống từ internet chạy trừ khi chúng đến từ một nơi đáng tin cậy nguồn.
LLL

7
Đây là một cách thực sự tồi để làm điều đó bởi vì nếu bạn có một tập lệnh xây dựng chẳng hạn (như tập lệnh xây dựng studio trực quan) và bạn muốn chạy một lệnh ps, thì thư mục làm việc của lệnh sẽ được đặt ở vị trí đó, vì vậy về cơ bản nó sẽ phá vỡ tất cả các tập lệnh bằng cách sử dụng powershell nhưpowershell -File "myscript.ps1"
Santhos

2
Nếu đó là một lựa chọn tồi, có cách nào tốt hơn / an toàn hơn để làm điều đó không?
Adam_G

4
Hãy để tôi sửa lại bản thân mình. Khi viết kịch bản PowerShell, ví dụ như cho xây dựng, luôn luôn sử dụng tùy chọn -NoProfile nhưpowershel -NoProfile -File "myscript.ps1"
Santhos

33

Tôi đã thử các câu trả lời trên trong Windows Server 2016 mà không thành công.

Nhưng tôi thấy cách tiếp cận này (nó phải giống với Windows 10) phù hợp với tôi.

  1. Bắt đầu phiên PowerShell
  2. Trong Thanh tác vụ, nhấp chuột phải và ghim để giữ liên kết ở đó
  3. Một lần nữa nhấp chuột phải vào biểu tượng trên thanh tác vụ, sau đó nhấp chuột phải vào Windows PowerShell và chọn Thuộc tính
  4. Nhập thư mục ưa thích của bạn vào trường đầu vào Start in: và nhấn OK
  5. Bắt đầu từ biểu tượng thanh tác vụ

Làm xong!

Trong cùng hộp thoại Thuộc tính, bạn cũng có thể thay đổi nhiều cài đặt khác như phông chữ, màu sắc, kích thước và trên tab Lối tắt ở đó thông qua nút Advanced. Bạn có thể chọn xem phiên PowerShell đó có được chạy với đặc quyền của quản trị viên hay không.


5
Thay đổi thư mục làm việc dường như không hoạt động khi bạn kiểm tra Run as administratortrong .lnkmenu nâng cao. Giải pháp dường như nằm ở đây stackoverflow.com/questions/31622469/…
Santhos

Thật kỳ lạ, vì nó hoạt động ở đây. Chỉ cần thử nghiệm với việc thay đổi dir và Run as aministratorhộp kiểm thay đổi qua lại.
neongrau

Hoạt động một sự quyến rũ. Cảm ơn.
Yasser Shaikh

12

Một cách dễ dàng hơn để đặt thư mục mặc định là:

  1. Nhấp chuột phải vào biểu tượng Windows PowerShell và ghim vào Start
  2. Nhấp chuột phải vào biểu tượng Windows PowerShell trong Start và một lần nữa nhấp chuột phải vào Windows PowerShell và chọn Thuộc tính (không phải Run as Administrator và không phải Windows PowerShell ISE )

    Nhập mô tả hình ảnh tại đây

    1. Trong tab Lối tắt -> trường 'Bắt ​​đầu trong', hãy thay đổi vị trí bạn muốn PowerShell bắt đầu.

    Nhập mô tả hình ảnh tại đây


Ooh cảm ơn bạn, tôi thích câu trả lời này. Đã giúp tôi hiểu tại sao và thư mục nào được đặt làm "mặc định". Tôi nghĩ rằng giải pháp này cũng làm giảm một chút chi phí thời gian tổng thể của việc tải hồ sơ (không chắc liệu nó có đúng hay không, nhưng cảm thấy rất thích).
Jennings

4

Việc đưa Set-Locationvào hồ sơ của bạn sẽ thay đổi vô điều kiện thư mục làm việc hiện tại, điều này có thể gây ra những hậu quả không mong muốn liên quan đến thư mục làm việc cho các tập lệnh mà bạn thực thi thông qua "chạy với PowerShell".

Một giải pháp thay thế là thay đổi thư mục làm việc cho các .lnktệp thành PowerShell thường thấy %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell. Nhấp chuột phải vào một liên kết và thay đổi thư mục làm việc từ %HOMEDRIVE%%HOMEPATH%thư mục bạn muốn.


1
Thay đổi thư mục làm việc dường như không hoạt động khi bạn kiểm tra Run as administratortrong .lnkmenu nâng cao. Giải pháp có vẻ là ở đây stackoverflow.com/questions/31622469/…
Santhos

Đây là giải pháp tốt nhất (đối với tôi, ít nhất).
Anders Arpi

Đó là lý do tại sao các kịch bản nên sử dụng -NoProfiletùy chọn như powershell -NoProfile -File "myscript.ps1"
Santhos

4

Nhập cái này vào PowerShell:

New-Item -path $profile -type file force

Nó tạo một tệp .ps1 trong thư mục PowerShell. Mở nó và chỉnh sửa nó thành:

Set-location C:\files

Làm xong

Tham khảo liên kết này. Nó hoạt động tốt.

Thay đổi Thư mục Bắt đầu PowerShell


3

Thay vì thay đổi vô điều kiện thư mục làm việc như đã đề cập trong các câu trả lời trước, bạn có thể viết một hàm đơn giản trong cấu hình PowerShell để sử dụng Set-Location nhằm thay đổi nhanh thư mục làm việc bất cứ khi nào cần thiết.

Kiểm tra câu trả lời của Jeremy Danyow để tạo / sửa đổi cấu hình PowerShell.

Thêm (các) chức năng vào hồ sơ PowerShell của bạn:

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

Chỉ cần thay đổi tên hàm và thư mục được trỏ đến. Sử dụng dấu ngoặc kép trên đường dẫn là bắt buộc nếu nó chứa khoảng trắng. Tôi cố gắng giữ tiền tốgoto_ vì nó giúp nhớ tên các hàm.

Bạn có thể bắt đầu nhập, goto_sau đó nhấn TAB để duyệt qua tất cả các chức năng đã thêm (hãy nhớ khởi động cửa sổ PowerShell mới sau khi thêm / sửa đổi các chức năng).


1

Chỉ sử dụng dòng lệnh, nếu tệp đã tồn tại, tệp sẽ thêm vào đó:

$(if (-Not (Test-Path ~\Documents\WindowsPowerShell\)){ mkdir ~\Documents\WindowsPowerShell\}) ; echo "Set-Location c:\THELOCATIONYOUWANT" >> ~\Documents\WindowsPowerShell\profile.ps1

1

Cùng với đó, dường như có một số nhầm lẫn về "thư mục làm việc" và "vị trí" của PowerShell. Điều mà hầu hết mọi người ở đây đang làm và nói phải làm là thay đổi "vị trí" của PowerShell. "Thư mục làm việc" thực sự khác nhau. Đây là một bài báo giải thích nó.

Đối với những người không muốn đọc bài viết: Mở PowerShell và sử dụng những gì người khác đã nói để làm Set-Location "C:\some\directory". Lưu ý rằng "thư mục làm việc" của bạn vẫn là nơi PowerShell của bạn đã được mở tại. Hoặc "~"hoặc "%SYSTEMROOT%\system32"tùy thuộc vào việc bạn có chạy với tư cách quản trị viên hay không. Để kiểm tra thư mục làm việc, hãy sử dụng [Environment]::CurrentDirectory.

Lưu ý: trong bài viết tác giả nói để kiểm tra "thư mục làm việc" bằng cách sử dụng lệnh này:

\[Environment\]::CurrentDirectory

Tôi không chắc liệu điều này có hoạt động với các phiên bản PowerShell cũ hơn hay không, nhưng với PowerShell 5 (và mới hơn) bạn phải sử dụng [Environment]::CurrentDirectory.


0

Đặt đây là dòng đầu tiên trong Profile.ps1 của bạn và PowerShell Core (pwsh) sẽ mở trong thư mục bạn hiện đang làm việc:

set-location (get-location) .path


0

Ghi đầu ra "Set-Location C: \" >> $ profile


0

Giải pháp này đặt thư mục làm việc hiện tại vào vị trí đặt tập lệnh. Đảm bảo đặt ở đầu tập lệnh của bạn hoặc ít nhất là trước khi bạn cố gắng sử dụng lệnh dựa trên đường dẫn vị trí.

Set-Location (Split-Path $MyInvocation.MyCommand.Path)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.