Festlegen von $ HOME in PowerShell


29

Wie ändere ich mein Standard-Ausgangsverzeichnis bei jedem Öffnen von Powershell in "C: \ Users \ khornsby"?

Ich verwende Windows 7. Unten finden Sie Informationen zum Zustand meiner Umgebung.

Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. Alle Rechte vorbehalten.

PS P: \> cd ~
PS P: \>echo $HOME
P: \
PS P: \> HOME="C:\Users\khornsby"
Der Begriff "HOME = C: \ Users \ khornsby" wird nicht als Name eines Cmdlets erkannt.
Funktion, Skriptdatei oder ausführbares Programm. Überprüfen Sie die Schreibweise des Namens oder
Wenn ein Pfad angegeben wurde, überprüfen Sie, ob der Pfad korrekt ist, und versuchen Sie es erneut.
In der Zeile: 1 Zeichen: 25
+ HOME = "C: \ Users \ khornsby" 

PS P: \> Set-Variable HOME "C:\Users\khornsby"
Set-Variable: Die Variable HOME kann nicht überschrieben werden, da sie schreibgeschützt ist oder
Konstante.
In der Zeile: 1 Zeichen: 13
+ Set-Variable 

PS P: \> dir env:home*

Name Wert
---- -----
HOMEPATH \
HOMEDRIVE P:
HOMESHARE \\ fileserv \ khornsby $


PS P: \>

2
Wie haben Sie Ihren Beitrag formatiert? Mir gefällt, wie hervorgehoben Ihre Eingabe ist.
Jay Bazuzi

3
Ich habe den <kbd>Tag benutzt.
kzh

Antworten:


27

Die Variable ist standardmäßig schreibgeschützt, kann jedoch mit der -ForceOption Remove-Variable entfernt werden. Damit Ihre Änderungen über mehrere Sitzungen hinweg bestehen bleiben, können Sie eine Profildatei erstellen, die mit .bashrcAusnahme von Powershell einer (für Bash unter Linux) ähnelt.

C:\Users\YOUR_USERNAME_HERE\documentsErstellen Sie in Ihrem Dokumentverzeichnis (normalerweise ) für Ihr Benutzerkonto einen WindowsPowerShell- Ordner (mit genau diesem Namen), falls noch keiner vorhanden ist. Erstellen Sie in dem Ordner eine Textdatei mit dem Namen profile.ps1 ( stellen Sie sicher, dass es sich nicht um profile.ps1.txt handelt ).

Platzieren Sie in der Datei alles, was beim Öffnen von Powershell ausgeführt werden soll.

Beispiel:

Write-Host "Hi John, welcome back!"
Remove-Variable -Force HOME
Set-Variable HOME "C:\Users\khornsby"

Ergebnis:

Alt-Text


1
Sie können das Skript auch beim Start über eine Verknüpfung %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -NoExit -ExecutionPolicy bypass -File C:\foo\profile.ps1
ausführen lassen

1
Ich habe es versucht und es ändert erfolgreich den Wert von $ HOME. Trotzdem wechselt "cd ~" hartnäckig zum ursprünglichen Speicherort.
Weeble

2
@Weeble, siehe meine Antwort zum Überschreiben der ~ Verknüpfung.
Ulty4life

9

Um die Bedenken von @Weeble bezüglich der ~Verknüpfung auszuräumen :

$HOMEDRIVE = "C:\"
$HOMEPATH = "Users\" + $env:username

# Set and force overwrite of the $HOME variable
Set-Variable HOME "$HOMEDRIVE$HOMEPATH" -Force

# Set the "~" shortcut value for the FileSystem provider
(get-psprovider 'FileSystem').Home = $HOMEDRIVE + $HOMEPATH

Siehe hier für die Unterscheidung zwischen ~ und $ HOME


1
Es lohnt sich cd $HOMEam Ende hinzuzufügen , damit die Shell an diesem Ort startet und für den Einsatz
Eliran Malka

5

Noch einfacher ... erweiterte Systemeinstellungen öffnen ...

 C:\> systempropertiesadvanced

Fügen Sie eine neue Systemvariable namens HOME mit dem Pfad zu Ihrem Profil hinzu

Bildbeschreibung hier eingeben

Starten Sie den Explorer neu oder melden Sie sich ab und wieder an ...

PS C:\> $Env:home 
--- 

3
Dies macht nicht, was die Frage fragt. Dies setzt die Umgebungsvariable $ env: HOME, nicht die Powershell-Variable $ HOME. Die Powershell-Variable $ HOME scheint von den Umgebungsvariablen $ env: HOMEDRIVE und $ env: HOMEPATH zum Zeitpunkt des Starts des Powershell-Prozesses abgeleitet zu sein. Es ist $ HOME, das das Verhalten von "cd ~" bestimmt.
Weeble

2
Entschuldigung, diese letzte Aussage ist nicht ganz richtig. $ HOME und das Verhalten von "cd ~" scheinen beide mit den Werten der Umgebungsvariablen HOMEDRIVE und HOMEPATH übereinzustimmen, wenn der Powershell-Prozess gestartet wird. Das nachträgliche Ändern einer dieser Variablen / Umgebungsvariablen scheint keine Auswirkung auf das von "cd ~" ausgewählte Verzeichnis zu haben.
Weeble

Funktioniert gut für mich ... Ich weiß nicht, was Sie anders machen.
Eddie B

3

Versuchen Sie Folgendes, um von Windows aus zu ändern:

  • Stecken Sie PowerShell in die Taskleiste.

  • Klicken Sie mit der rechten Maustaste auf das PowerShell-Symbol in der Taskleiste.

  • Klicken Sie mit der rechten Maustaste auf "Windows PowerShell" und wählen Sie "Eigenschaften".

  • Wechseln Sie im Fenster "Eigenschaften" zur Registerkarte "Verknüpfung" und ändern Sie das Feld "Start in:" in das gewünschte Startverzeichnis. (Beispiel:) .C:\Users\username\Desktop

  • OK klicken'.

  • Starten Sie PowerShell über die Taskleiste.

    Taskleiste

    Eigenschaftenfenster


Funktioniert nicht, wenn "Als Administrator ausführen" ausgewählt wurde
devi

2

Sie können verwenden help about_profiles, um weitere Details zu sehen. Vergessen Sie nicht, Ihr Skript zu unterschreiben.


3
helpvon welcher anwendung?
kzh

@kzh: PowerShell
paradroid
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.