%20zum%20Pfad%20in%20Powershell.png)
Ich habe also ein Programm, das ich in Windows PowerShell ausführen möchte. In cmd gebe ich einfach ein script.cmd
und das Skript wird ausgeführt. In PowerShell muss ich anscheinend Folgendes tun ./script.cmd
.
BASH verhält sich standardmäßig ähnlich. Um das Verhalten von BASH zu ändern, müssen Sie Folgendes tun export PATH=$PATH:.
und dann script.sh
funktioniert es, anstatt nur ./script.sh
.
Meine Frage ist: Wie kann ich es script.cmd
in PowerShell zum Laufen bringen? Muss ich etwas Ähnliches tun wie export PATH=$PATH:.
? Ich habe es echo $PATH
in PowerShell gemacht, aber das hat nichts ausgegeben.
Antwort1
Lesen Sie zunächst, get-help about_command_precedence
wie das funktioniert.
Geben Sie als Nächstes $env:path
Ihren aktuellen PFAD ein, um ihn anzuzeigen.
Sie können dem PATH wie folgt ein Verzeichnis anhängen:$env:path += ";C:\Scripts"
Sie können das aktuelle Verzeichnis auch wie folgt an den PATH anhängen:$env:path += ";."
get-item env:
zeigt Ihnen alle Umgebungsvariablen.
Antwort2
Wenn Sie es dauerhaft tun möchten, mache ich Folgendes.
(Und anstatt dem Pfad einen . hinzuzufügen, versuche ich, das aktuelle Verzeichnis hinzuzufügen, in dem Sie sich gerade befinden.)
Sie können beispielsweise die Registrierung selbst bearbeiten.
$oldpath = (Get-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH).path
$newpath = "$oldpath;$($pwd.Path)"
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH -Value $newPath
#final check
Get-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH).Path
Natürlich benötigen Sie hierfür Administratorrechte. Lassen Sie uns also einen anderen Weg finden, wenn Sie kein Administrator sind. Powershell bietet Ihnen eine andere Möglichkeit, dies zu tun, und zwar wie folgt:
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";$($pwd.Path)", "User")