Wie legen Sie das Standardverzeichnis von PowerShell fest?

108

Gibt es eine Möglichkeit, den Standardspeicherort von PowerShell zu ändern?

Wie legen Sie das Standardarbeitsverzeichnis von PowerShell fest?

Youbloodywombat
quelle
1
Hier ist eine Möglichkeit, wie Sie dies tun können, indem
Fehlerhafter Philosoph
@BlunderingPhilosopher Das ist für Git Shell ..?
Vivek Chavda
@ VivekChavda Yep
Fehlerhafter Philosoph

Antworten:

61

Sie können das Verzeichnis angeben, das beim Starten von PowerShell geöffnet werden soll:

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

Verwenden Sie es einfach in Ihrer Verknüpfung.

Oder verwenden Sie ein Profil , um ein Startverzeichnis festzulegen .

Peter Hahndorf
quelle
5
Für PS Core:pwsh.exe -WorkingDirectory C:\YourLocation\Goes\Here
Sergey Zykov
"C: \ Programme \ PowerShell \ 6 \ pwsh.exe" - Arbeitsverzeichnis D: \ test
cem kaan
179

Erstellen Sie ein PowerShell-Profil wie folgt.

  1. Führen Sie PowerShell als Administrator aus und führen Sie den folgenden Befehl aus:

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

    Dadurch kann PowerShell lokale Skripte und aus dem Internet heruntergeladene Skripte ausführen, die signiert wurden. Weitere Informationen zu diesem Befehl finden Sie in der Dokumentation .

  2. DocumentsSuchen Sie in Ihrem Ordner einen Ordner mit dem Namen " WindowsPowerShellClassic PowerShell" oder " PowerShellPowerShell Core". Wenn es nicht existiert, ist das in Ordnung; erstelle es einfach.

  3. Erstellen Sie eine neue Datei mit dem Namen profile.ps1im WindowsPowerShellOrdner (oder PowerShellfür PowerShell Core).
  4. Öffnen profile.ps1Sie den folgenden Befehl und fügen Sie ihn hinzu, um Ihr Standardarbeitsverzeichnis festzulegen:

    Set-Location C:\my\default\working\directory
  5. Öffnen Sie ein neues PowerShell-Fenster. Die Änderungen sollten wirksam werden.

Jeremy Danyow
quelle
1
Ich habe dies versucht, aber "profile.ps1 kann nicht geladen werden, da das Ausführen von Skripten deaktiviert ist". Gibt es eine "sichere" Möglichkeit, sichere Skripte zu aktivieren?
John Little
3
Führen Sie Folgendes aus: "Set-ExecutionPolicy -ExecutionPolicy RemoteSigned" Hier können Sie darüber lesen: technet.microsoft.com/en-us/library/ee176961.aspx Heruntergeladene Skripte aus dem Internet können nur ausgeführt werden, wenn sie von einem vertrauenswürdigen Benutzer stammen Quelle.
LLL
7
Dies ist ein wirklich schlechter Weg, denn wenn Sie beispielsweise ein Build-Skript (wie das Visual Studio-Build-Skript) haben und einen ps-Befehl ausführen möchten, wird das Arbeitsverzeichnis des Befehls auf diesen Speicherort festgelegt, sodass dies im Grunde genommen der Fall ist brechen Sie alle Skripte mit Powershell wiepowershell -File "myscript.ps1"
Santhos
2
Wenn das eine schlechte Option ist, gibt es einen besseren / sichereren Weg, dies zu tun?
Adam_G
4
Lass mich mich korrigieren. Verwenden Sie beim Schreiben von Powershell-Skripten, z. B. zum Erstellen, immer die Option -NoProfile wiepowershel -NoProfile -File "myscript.ps1"
Santhos,
33

Ich hatte die obigen Antworten in Windows Server 2016 ohne Erfolg versucht .

Aber ich fand, dass dieser Ansatz (er sollte für Windows 10 der gleiche sein) für mich funktioniert.

  1. Starten Sie eine PowerShell-Sitzung
  2. Klicken Sie in der Taskleiste mit der rechten Maustaste und pinnen Sie, um dort einen Link zu behalten
  3. Klicken Sie erneut mit der rechten Maustaste auf das Symbol in der Taskleiste, klicken Sie mit der rechten Maustaste auf Windows PowerShell und wählen Sie Eigenschaften
  4. Geben Sie Ihr bevorzugtes Verzeichnis in das Eingabefeld Start in: ein und drücken Sie OK
  5. Beginnen Sie mit dem Taskleistensymbol

Getan!

Im selben Eigenschaften- Dialog können Sie auch viele andere Einstellungen wie Schriftarten, Farben, Größen und auf der Registerkarte Verknüpfung dort über die Schaltfläche ändern Advanced. Sie können auswählen, ob diese PowerShell-Sitzung mit Administratorrechten ausgeführt werden soll.

neongrau
quelle
5
Das Ändern des Arbeitsverzeichnisses scheint nicht zu funktionieren, wenn Sie Run as administratorim .lnkerweiterten Menü nachsehen. Die Lösung scheint hier zu sein stackoverflow.com/questions/31622469/…
Santhos
Das ist komisch, denn hier funktioniert es. Gerade getestet mit Ändern des Verzeichnisses und Ändern des Run as aministratorKontrollkästchens hin und her.
Neongrau
Wirkt ein Zauber. Vielen Dank.
Yasser Shaikh
12

Eine einfachere Möglichkeit, das Standardverzeichnis festzulegen, ist die folgende:

  1. Klicken Sie mit der rechten Maustaste auf das Windows PowerShell-Symbol und klicken Sie auf Start
  2. Klicken Sie mit der rechten Maustaste auf das Windows PowerShell-Symbol in Start, und klicken Sie erneut mit der rechten Maustaste auf Windows PowerShell, und wählen Sie Eigenschaften aus (nicht als Administrator ausführen und nicht Windows PowerShell ISE ).

    Geben Sie hier die Bildbeschreibung ein

    1. In der Shortcut Registerkarte -> ‚Start in‘ Feld, Änderung der Position möchten Sie Powershell in starten.

    Geben Sie hier die Bildbeschreibung ein

Antonio
quelle
Oh danke, ich mag diese Antwort. Hat mir geholfen zu verstehen, warum und welches Verzeichnis als "Standard" festgelegt wurde. Ich denke, diese Lösung reduziert auch die Overhead-Zeitkosten für das Laden des Profils geringfügig (nicht sicher, ob es wahr ist oder nicht, aber es fühlt sich so an).
Jennings
4

Durch das Einfügen Set-Locationin Ihr Profil wird das aktuelle Arbeitsverzeichnis bedingungslos geändert. Dies kann unerwünschte Folgen für das Arbeitsverzeichnis für Skripts haben, die Sie über "Mit PowerShell ausführen" ausführen.

Eine alternative Lösung besteht darin, das Arbeitsverzeichnis für die .lnkDateien in PowerShell zu ändern, das normalerweise in enthalten ist %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell. Klicken Sie mit der rechten Maustaste auf einen Link und ändern Sie das Arbeitsverzeichnis von %HOMEDRIVE%%HOMEPATH%in das gewünschte Verzeichnis.

Leonard Brünings
quelle
1
Das Ändern des Arbeitsverzeichnisses scheint nicht zu funktionieren, wenn Sie Run as administratorim .lnkerweiterten Menü nachsehen. Die Lösung scheint hier zu sein stackoverflow.com/questions/31622469/…
Santhos
Dies ist die beste Lösung (zumindest für mich).
Anders Arpi
Deshalb sollten die Skripte die -NoProfileOption wie powershell -NoProfile -File "myscript.ps1"
Santhos
4

Geben Sie dies in PowerShell ein:

New-Item -path $profile -type file force

Es wird eine .ps1-Datei im PowerShell-Ordner erstellt. Öffnen Sie es und bearbeiten Sie es wie folgt:

Set-location C:\files

Getan

Siehe diesen Link. Es funktioniert gut.

Ändern Sie das PowerShell-Startverzeichnis

Rochester
quelle
3

Anstatt das Arbeitsverzeichnis wie in den vorherigen Antworten erwähnt bedingungslos zu ändern, können Sie eine einfache Funktion in das PowerShell-Profil schreiben, mit der Sie Set-Locationdas Arbeitsverzeichnis bei Bedarf schnell ändern können.

Überprüfen Sie die Antwort von Jeremy Danyow , um ein PowerShell-Profil zu erstellen / zu ändern.

Fügen Sie Ihrem PowerShell-Profil eine oder mehrere Funktionen hinzu:

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

Ändern Sie einfach den Funktionsnamen und das Verzeichnis, auf das verwiesen wird. Die Verwendung von Anführungszeichen für den Pfad ist obligatorisch, wenn er Leerzeichen enthält. Ich versuche, das Präfix beizubehalten, goto_da es beim Speichern der Funktionsnamen hilft.

Sie können mit der Eingabe beginnen und goto_dann die Tabulatortaste drücken, um alle hinzugefügten Funktionen zu durchlaufen (denken Sie daran, nach dem Hinzufügen / Ändern von Funktionen ein neues PowerShell-Fenster zu starten).

Sundhar
quelle
1

Wenn eine Datei bereits über die Befehlszeile vorhanden ist, wird sie angehängt:

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

Damit scheint es einige Verwirrung hinsichtlich des "Arbeitsverzeichnisses" und des "Speicherorts" von PowerShell zu geben. Was die meisten Leute hier tun und sagen, dass sie den "Standort" von PowerShell ändern sollen. Das "Arbeitsverzeichnis" ist eigentlich anders. Hier ist ein Artikel , der es erklärt.

Für diejenigen, die den Artikel nicht lesen möchten: Öffnen Sie PowerShell und verwenden Sie, was andere gesagt haben Set-Location "C:\some\directory". Beachten Sie, dass sich in Ihrem "Arbeitsverzeichnis" noch Ihre PowerShell befindet. Entweder "~"oder "%SYSTEMROOT%\system32"abhängig davon, ob Sie als Administrator ausgeführt wurden oder nicht. Verwenden Sie zum Überprüfen des Arbeitsverzeichnisses [Environment]::CurrentDirectory.

Hinweis: In dem Artikel sagt der Autor, dass er das "Arbeitsverzeichnis" mit diesem Befehl überprüfen soll:

\[Environment\]::CurrentDirectory

Ich bin nicht sicher, ob dies mit älteren PowerShell-Versionen funktioniert, aber mit PowerShell 5 (und höher) müssen Sie verwenden [Environment]::CurrentDirectory.

RangerGeof
quelle
0

Machen Sie dies zur ersten Zeile in Ihrer Profile.ps1 und PowerShell Core (pwsh) wird in dem Verzeichnis geöffnet, in dem Sie gerade arbeiten:

set-location (get-location) .path

Tedro
quelle
0

Schreibausgabe "Set-Location C: \" >> $ profile

Dave
quelle
0

Diese Lösung setzt den aktuellen Arbeitsordner auf den Speicherort, an dem sich das Skript befindet. Stellen Sie sicher, dass Sie es am Anfang Ihres Skripts platzieren oder zumindest bevor Sie versuchen, einen Befehl zu verwenden, der sich auf den Standortpfad stützt.

Set-Location (Split-Path $MyInvocation.MyCommand.Path)
Ipse
quelle