0

Ich habe ein Powershell-Skript, das ich von cmd/ps an beliebiger Stelle ausführen möchte, indem ich es in den Pfad setze. Was ist der Befehl, der das erreichen kann?Setzen Sie ein Powershell-Skript auf den Pfad durch Powershell-Befehle.

Ich bin im Grunde auf der Suche nach einem UNIX-Äquivalent von Ihrem Skript in Bashrc und damit von überall zur Verfügung zu stellen.

echo 'export PATH=$PATH:/path/to/script' >> ~/.bashrc && source ~/.bashrc 
+1

Mögliches Duplikat von [Wo legt Windows PowerShell $ profile fest?] (Http://stackoverflow.com/questions/7621872/where-does-windows-powershell-set-profile) – TessellatingHeckler

Antwort

1

In Fenster haben Sie auch die Variable PATH-System, das für die Definition, wo zu finden, ausführbare Dateien verwendet wird.

Sie könnten die folgende tun, die gleichwertig sein sollten Sie gehen davon aus nur mit Powershell:

$newPath = "c:\tmp\MyScriptPath"; 
[Environment]::SetEnvironmentVariable('PATH', "$($env:Path);$newPath", [EnvironmentVariableTarget]::User); 
# Update the path variable in your current session; next time it's loaded directly 
$env:Path = "$($env:Path);$newPath"; 

Anschließend können Sie Ihr Skript ausführen direkt in Powershell nur mit dem Namen des Skripts.

Jedoch _: das wird unter cmd nicht funktionieren, weil cmd nicht weiß, wie das Skript ps1 als eine ausführbare Datei behandelt wird. Normalerweise würde man das Skript von cmd ausführen, indem Sie den folgenden Aufruf:

Powershell.exe -executionpolicy remotesigned -File C:\Tmp\Script.ps1 

Wenn dies „inakzeptabel“ für Sie ist, ist der einfachste Weg, eine Fledermaus-Skript zusammen mit Ihrem ps1-Skript (denselben Pfad) und fügen Sie die erstellen folgender Inhalt:

Script.bat (Vorausgesetzt, Sie haben Script.ps1 im selben Ordner):

@ECHO OFF 
PowerShell.exe -Command "& '%~dpn0.ps1'" 
PAUSE 

Dies wird den Wrapper erstellen benötigte Script überall in Ihrem cmd Invoke als Batch-Dateien aus ausgeführt werden cmd

+0

Die Route der Fledermausdatei wurde versucht, aber sie klagt: powershell.exe: Der Begriff 'powershell.exe' wird nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei, ... erkannt. – Scooby