Bagaimana Anda mengatur direktori default PowerShell?


Jawaban:


61

Anda dapat menentukan direktori yang akan dibuka saat memulai PowerShell:

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

Cukup gunakan di pintasan Anda.

Atau gunakan profil untuk menyetel direktori awal.


5
Untuk PS Core:pwsh.exe -WorkingDirectory C:\YourLocation\Goes\Here
Sergey Zykov

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

179

Buat profil PowerShell sebagai berikut.

  1. Jalankan PowerShell sebagai administrator dan jalankan perintah berikut:

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

    Ini akan mengizinkan PowerShell untuk menjalankan skrip dan skrip lokal yang diunduh dari Internet yang telah ditandatangani. Baca lebih lanjut tentang perintah ini di dokumentasi .

  2. Di Documentsfolder Anda , temukan folder yang diberi nama WindowsPowerShelluntuk PowerShell klasik atau PowerShelluntuk PowerShell Core yang lebih baru. Jika tidak ada, tidak apa-apa; buat saja.

  3. Buat file baru dengan nama profile.ps1di WindowsPowerShellfolder (atau PowerShelluntuk PowerShell Core).
  4. Buka profile.ps1dan tambahkan perintah berikut untuk mengatur direktori kerja default Anda:

    Set-Location C:\my\default\working\directory
  5. Buka jendela PowerShell baru ... perubahan seharusnya sudah diterapkan.


1
Saya mencoba ini, tetapi mendapatkan "profile.ps1 tidak dapat dimuat karena menjalankan skrip dinonaktifkan". Apakah ada cara yang "aman" untuk mengaktifkan skrip aman?
John Little

3
Jalankan ini: "Set-ExecutionPolicy -ExecutionPolicy RemoteSigned" Anda dapat membacanya di sini: technet.microsoft.com/en-us/library/ee176961.aspx Itu tidak mengizinkan skrip yang diunduh dari internet untuk dijalankan kecuali mereka berasal dari yang terpercaya sumber.
LLL

7
Ini adalah cara yang sangat buruk untuk melakukannya karena jika Anda memiliki skrip build misalnya (seperti skrip build studio visual) dan Anda ingin menjalankan perintah ps, maka direktori kerja perintah akan disetel ke lokasi itu, jadi pada dasarnya akan hancurkan semua skrip menggunakan PowerShell sepertipowershell -File "myscript.ps1"
Santhos

2
Jika itu pilihan yang buruk, apakah ada cara yang lebih baik / lebih aman untuk melakukannya?
Adam_G

4
Biarkan saya mengoreksi diri saya sendiri. Saat menulis skrip PowerShell, misalnya untuk build, selalu gunakan opsi -NoProfile sepertipowershel -NoProfile -File "myscript.ps1"
Santhos

33

Saya telah mencoba jawaban di atas di Windows Server 2016 tanpa hasil.

Tetapi saya menemukan pendekatan ini (harus sama untuk Windows 10) berfungsi untuk saya.

  1. Mulai sesi PowerShell
  2. Di Bilah Tugas, klik kanan dan sematkan untuk menyimpan tautan di sana
  3. Sekali lagi klik kanan ikon di taskbar dan kemudian klik kanan Windows PowerShell dan pilih Properties
  4. Masukkan direktori pilihan Anda di kolom input Start in: dan tekan OK
  5. Mulai dari ikon bilah tugas

Selesai!

Dalam dialog Properti yang sama Anda juga dapat mengubah banyak pengaturan lain seperti font, warna, ukuran dan pada tab Pintasan melalui tombol Advanced. Anda dapat memilih apakah sesi PowerShell itu akan dijalankan dengan hak administrator.


5
Mengubah direktori kerja sepertinya tidak berhasil saat Anda memeriksa Run as administratordi .lnkmenu lanjutan. Solusinya tampaknya ada di sini stackoverflow.com/questions/31622469/…
Santhos

Aneh, karena berhasil di sini. Baru saja diuji dengan mengubah dir dan mengubah Run as aministratorkotak centang bolak-balik.
neongrau

Berhasil. Terima kasih.
Yasser Shaikh

12

Cara yang lebih mudah untuk mengatur direktori default adalah sebagai berikut:

  1. Klik kanan ikon Windows PowerShell dan sematkan ke Mulai
  2. Klik kanan ikon Windows PowerShell di Start, dan sekali lagi klik kanan Windows PowerShell dan pilih Properties (bukan Run as Administrator dan bukan Windows PowerShell ISE )

    Masukkan deskripsi gambar di sini

    1. Di tab Pintasan -> bidang 'Mulai', ubah ke lokasi tempat Anda ingin memulai PowerShell.

    Masukkan deskripsi gambar di sini


Ooh terima kasih, saya suka jawaban ini. Membantu saya memahami mengapa dan direktori mana yang disetel sebagai "default". Saya pikir solusi ini juga sedikit mengurangi biaya waktu overhead untuk memuat profil (tidak yakin apakah itu benar atau tidak, tetapi rasanya seperti itu).
Jennings

4

Memasukkan Set-Locationke profil Anda tanpa syarat akan mengubah direktori kerja saat ini, yang mungkin memiliki konsekuensi yang tidak diinginkan sehubungan dengan direktori kerja untuk skrip yang Anda jalankan melalui "run with PowerShell".

Solusi alternatifnya adalah mengubah direktori kerja untuk .lnkfile ke PowerShell yang biasanya ditemukan di %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell. Klik kanan pada link, dan ubah direktori kerja dari %HOMEDRIVE%%HOMEPATH%direktori yang Anda inginkan.


1
Mengubah direktori kerja sepertinya tidak berhasil saat Anda memeriksa Run as administratordi .lnkmenu lanjutan. Solusinya tampaknya ada di sini stackoverflow.com/questions/31622469/…
Santhos

Ini adalah solusi terbaik (setidaknya bagi saya).
Anders Arpi

Itulah mengapa skrip harus menggunakan -NoProfileopsi seperti powershell -NoProfile -File "myscript.ps1"
Santhos

4

Ketik ini di PowerShell:

New-Item -path $profile -type file force

Ini membuat file .ps1 di folder PowerShell. Buka, dan edit sebagai:

Set-location C:\files

Selesai

Lihat tautan ini. Ini bekerja dengan baik.

Ubah Direktori Mulai PowerShell


3

Alih-alih mengubah direktori kerja tanpa syarat seperti yang disebutkan dalam jawaban sebelumnya, Anda dapat menulis fungsi sederhana di profil PowerShell untuk digunakan Set-Locationdengan cepat mengubah direktori kerja bila diperlukan.

Periksa jawaban Jeremy Danyow untuk membuat / mengubah profil PowerShell.

Tambahkan fungsi ke profil PowerShell Anda:

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

Ubah saja nama fungsi dan direktori yang ditunjuk. Menggunakan tanda kutip di jalur wajib diisi jika berisi spasi. Saya mencoba untuk mempertahankan awalan goto_karena membantu dalam mengingat nama fungsi.

Anda dapat mulai mengetik goto_lalu menekan TAB untuk menelusuri semua fungsi yang ditambahkan (ingat untuk memulai jendela PowerShell baru setelah menambahkan / memodifikasi fungsi).


1

Hanya dengan menggunakan baris perintah, jika file sudah ada, itu akan ditambahkan ke dalamnya:

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

1

Dengan itu, tampaknya ada beberapa kebingungan pada "direktori kerja" dan "lokasi" PowerShell. Apa yang kebanyakan orang lakukan di sini, dan katakan yang harus dilakukan adalah mengubah "lokasi" PowerShell. "Direktori kerja" sebenarnya berbeda. Berikut adalah artikel yang menjelaskannya.

Bagi mereka yang tidak ingin membaca artikel: Buka PowerShell dan gunakan apa yang dikatakan orang lain untuk dilakukan Set-Location "C:\some\directory". Perhatikan bahwa "direktori kerja" Anda masih di mana PowerShell Anda dibuka. Entah "~"atau "%SYSTEMROOT%\system32"tergantung apakah Anda menjalankan sebagai administrator atau tidak. Untuk memeriksa direktori kerja, gunakan [Environment]::CurrentDirectory.

Catatan: di artikel penulis mengatakan untuk memeriksa "direktori kerja" dengan menggunakan perintah ini:

\[Environment\]::CurrentDirectory

Saya tidak yakin apakah ini berfungsi dengan versi PowerShell yang lebih lama, tetapi dengan PowerShell 5 (dan yang lebih baru) Anda harus menggunakan [Environment]::CurrentDirectory.


1

Write-Output "Set-Lokasi C: \" >> $ profile


0

Jadikan ini baris pertama di Profile.ps1 Anda dan PowerShell Core (pwsh) akan terbuka di direktori tempat Anda saat ini bekerja:

set-location (get-location) .path


0

Solusi ini menetapkan folder kerja saat ini ke lokasi tempat skrip berada. Pastikan untuk menempatkan di awal skrip Anda, atau setidaknya sebelum Anda mencoba menggunakan perintah yang mengandalkan jalur lokasi.

Set-Location (Split-Path $MyInvocation.MyCommand.Path)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.