Gibt es eine Möglichkeit, den Standardspeicherort von PowerShell zu ändern?
Wie legen Sie das Standardarbeitsverzeichnis von PowerShell fest?
Gibt es eine Möglichkeit, den Standardspeicherort von PowerShell zu ändern?
Wie legen Sie das Standardarbeitsverzeichnis von PowerShell fest?
Antworten:
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 .
pwsh.exe -WorkingDirectory C:\YourLocation\Goes\Here
Erstellen Sie ein PowerShell-Profil wie folgt.
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 .
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.
profile.ps1im WindowsPowerShellOrdner (oder PowerShellfür PowerShell Core).Öffnen profile.ps1Sie den folgenden Befehl und fügen Sie ihn hinzu, um Ihr Standardarbeitsverzeichnis festzulegen:
Set-Location C:\my\default\working\directoryÖffnen Sie ein neues PowerShell-Fenster. Die Änderungen sollten wirksam werden.
powershell -File "myscript.ps1"
powershel -NoProfile -File "myscript.ps1"
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.
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.
Run as administratorim .lnkerweiterten Menü nachsehen. Die Lösung scheint hier zu sein stackoverflow.com/questions/31622469/…
Run as aministratorKontrollkästchens hin und her.
Eine einfachere Möglichkeit, das Standardverzeichnis festzulegen, ist die folgende:
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 ).
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.
Run as administratorim .lnkerweiterten Menü nachsehen. Die Lösung scheint hier zu sein stackoverflow.com/questions/31622469/…
-NoProfileOption wie powershell -NoProfile -File "myscript.ps1"
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.
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).
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
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.
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)