PowerShell'in varsayılan dizinini nasıl ayarlarsınız?


Yanıtlar:


61

PowerShell'i başlatırken açılacak dizini belirtebilirsiniz:

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

Sadece kısayolunuzda kullanın.

Veya bir başlangıç ​​dizini ayarlamak için bir profil kullanın.


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

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

179

Aşağıdaki gibi bir PowerShell profili oluşturun .

  1. PowerShell'i yönetici olarak çalıştırın ve aşağıdaki komutu yürütün:

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

    Bu, PowerShell'in imzalanmış İnternet'ten indirilen yerel komut dosyalarını ve komut dosyalarını çalıştırmasına izin verecektir. Belgelerde bu komut hakkında daha fazla bilgi edinin .

  2. Senin içinde Documentsklasörün adında bir klasör bulmak WindowsPowerShellklasik PowerShell veya PowerShellyeni PowerShell Çekirdek. Eğer yoksa, sorun değil; sadece yaratın.

  3. Adlı yeni bir dosya oluşturun profile.ps1içinde WindowsPowerShell(veya klasör PowerShellPowerShell Çekirdek).
  4. profile.ps1Varsayılan çalışma dizininizi ayarlamak için aşağıdaki komutu açın ve ekleyin:

    Set-Location C:\my\default\working\directory
  5. Yeni bir PowerShell penceresi açın ... değişikliklerin geçerli olması gerekir.


1
Bunu denedim, ancak "profile.ps1 yüklenemiyor çünkü komut dosyaları çalıştırılamıyor". Güvenli komut dosyalarını etkinleştirmenin "güvenli" yolu var mı?
John Little

3
Bu çalıştırın: "Set-ExecutionPolicy -ExecutionPolicy RemoteSigned" Burada bu konuda bilgi edinebilir: technet.microsoft.com/en-us/library/ee176961.aspx onlar güvenilen gelen sürece çalıştırmak için internetten indirilen komut dosyalarını izin vermez kaynak.
HBÖ

7
Bunu yapmanın gerçekten kötü bir yolu, çünkü örneğin bir derleme betiğiniz varsa (görsel stüdyo oluşturma betiği gibi) ve bir ps komutu çalıştırmak istiyorsanız, o zaman komutun çalışma dizini o konuma ayarlanacaktır, bu yüzden temelde powershell benzeri kullanarak tüm komut dosyalarını powershell -File "myscript.ps1"
kırın

2
Bu kötü bir seçenekse, bunu yapmanın daha iyi / daha güvenli bir yolu var mı?
Adam_G

4
Kendimi düzeltmeme izin ver. Powershell betikleri yazarken, örneğin derleme için, her zaman -NoProfile seçeneğini kullanınpowershel -NoProfile -File "myscript.ps1"
Santhos

33

Yukarıdaki cevapları Windows Server 2016'da başarılı olmadan denedim .

Ancak bu yaklaşımı (Windows 10 için aynı olmalı) benim için çalıştığını buldum.

  1. Bir PowerShell oturumu başlatın
  2. Görev Çubuğunda, bir bağlantıyı orada tutmak için sağ tıklayın ve sabitleyin
  3. Yine görev çubuğundaki simgeye sağ tıklayın ve ardından Windows PowerShell'e sağ tıklayın ve Özellikler'i seçin.
  4. Tercih ettiğiniz dizini Başlangıç: giriş alanına girin ve Tamam'a basın
  5. Görev çubuğu simgesinden başlayın

Bitti!

Aynı Özellikler iletişim kutusunda yazı tipleri, renkler, boyutlar ve kısayol sekmesi gibi diğer birçok ayarı da düğme aracılığıyla değiştirebilirsiniz Advanced. Bu PowerShell oturumunun yönetici ayrıcalıklarıyla çalıştırılıp çalıştırılmayacağını seçebilirsiniz.


5
Eğer kontrol ederken çalışma dizinini değiştirme çalışmaları görünmüyor Run as administratoriçinde .lnkgelişmiş menü. Çözüm burada görünüyor stackoverflow.com/questions/31622469/…
Santhos

Bu tuhaf, çünkü burada çalışıyor. Sadece dir değiştirerek ve Run as aministratoronay kutusunu ileri geri değiştirerek test edildi .
neongrau

Büyüleyici çalışıyor. Teşekkürler.
Yasser Shaikh

12

Varsayılan dizini ayarlamanın daha kolay bir yolu şudur:

  1. Windows PowerShell simgesine sağ tıklayın ve Başlat'a sabitleyin
  2. Başlat'ta Windows PowerShell simgesine sağ tıklayın ve tekrar Windows PowerShell'e sağ tıklayın ve Özellikler'i seçin ( Yönetici olarak Çalıştır ve Windows PowerShell ISE'yi değil )

    Buraya resim açıklamasını girin

    1. In Kısayol sekmesine - Sahada 'Başlat'>, yere değişiklik PowerShell içinde başlamak istiyorum.

    Buraya resim açıklamasını girin


Ooh teşekkür ederim, bu cevabı beğendim. Neden ve hangi dizinin "varsayılan" olarak ayarlandığını anlamama yardımcı oldu. Bence bu çözüm, profili yüklemenin genel maliyetini de biraz düşürüyor (doğru olup olmadığından emin değilim, ama öyle hissettiriyor).
Jennings

4

Set-LocationProfilinize koymak , geçerli çalışma dizinini koşulsuz olarak değiştirir ve bu durum, "PowerShell ile çalıştır" aracılığıyla yürüttüğünüz betikler için çalışma dizini açısından istenmeyen sonuçlara yol açabilir.

Alternatif bir çözüm, .lnkdosyalar için çalışma dizinini genellikle içinde bulunan PowerShell olarak değiştirmektir %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell. Bir bağlantıya sağ tıklayın ve çalışma dizinini %HOMEDRIVE%%HOMEPATH%istediğiniz dizine değiştirin .


1
Eğer kontrol ederken çalışma dizinini değiştirme çalışmaları görünmüyor Run as administratoriçinde .lnkgelişmiş menü. Çözüm burada görünüyor stackoverflow.com/questions/31622469/…
Santhos

Bu en iyi çözümdür (en azından benim için).
Anders Arpi

Bu yüzden senaryolarda şu -NoProfileseçenek kullanılmalıdırpowershell -NoProfile -File "myscript.ps1"
Santhos


3

Önceki cevaplarda belirtildiği gibi çalışma dizinini koşulsuz olarak değiştirmek yerine, Set-Locationgerektiğinde çalışma dizinini hızlı bir şekilde değiştirmek için kullanmak üzere PowerShell profiline basit bir işlev yazabilirsiniz .

Bir PowerShell profili oluşturmak / değiştirmek için Jeremy Danyow'un yanıtını kontrol edin .

PowerShell profilinize bir işlev ekleyin:

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

Sadece işlev adını ve gösterilen dizini değiştirin. Yol boşluk içeriyorsa, yol üzerinde tırnak işareti kullanmak zorunludur. Öneki goto_, işlevlerin adlarını hatırlamaya yardımcı olduğu için tutmaya çalışıyorum .

Yazmaya başlayabilir, goto_ardından eklenen tüm işlevler arasında geçiş yapmak için SEKME tuşuna basabilirsiniz (işlevleri ekledikten / değiştirdikten sonra yeni bir PowerShell penceresi başlatmayı unutmayın).


1

Yalnızca komut satırını kullanarak, bir dosya zaten varsa, ona eklenir:

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

1

Bununla birlikte, "çalışma dizini" ve PowerShell'in "konumu" konusunda bazı karışıklıklar var gibi görünüyor. Buradaki çoğu insanın yaptığı ve yapmayı söylediği, PowerShell'in "konumunu" değiştirmek. "Çalışma dizini" aslında farklıdır. İşte bunu açıklayan bir makale .

Makaleyi okumak istemeyenler için: PowerShell'i açın ve başkalarının yapmasını söylediklerini kullanın Set-Location "C:\some\directory". "Çalışma dizininizin" hala PowerShell'inizin açıldığı yerde olduğuna dikkat edin. Ya "~"ya "%SYSTEMROOT%\system32"sen yönetici olarak ya da değil kaçsam bağlı. Çalışma dizinini kontrol etmek için kullanın [Environment]::CurrentDirectory.

Not: Makalede yazar, bu komutu kullanarak "çalışma dizini" ni kontrol etmeyi söylüyor:

\[Environment\]::CurrentDirectory

Bunun eski PowerShell sürümleriyle çalışıp çalışmadığından emin değilim, ancak PowerShell 5 (ve sonrası) ile kullanmanız gerekir [Environment]::CurrentDirectory.


1

Yazma Çıkışı "Ayar-Konumu C: \" >> $ profil


0

Bunu Profile.ps1'inizin ilk satırı yapın ve PowerShell Core (pwsh) şu anda çalıştığınız dizinde açılacaktır:

set-location (get-location) .path


0

Bu çözüm, geçerli çalışma klasörünü komut dosyasının bulunduğu konuma ayarlar. Komut dosyanızın başına veya en azından konum yoluna bağlı olarak komutu kullanmaya çalışmadan önce yerleştirdiğinizden emin olun.

Set-Location (Split-Path $MyInvocation.MyCommand.Path)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.