Équivalent de la commande `source` de bash dans Powershell?

15

Pour exécuter un script bash ligne par ligne (afin de conserver les variables d'environnement, par exemple), on procède comme suit:

$ . myscript.sh

Ou:

$ source myscript.sh

J'ai un script PowerShell qui - entre autres - définit la valeur de l'invite via la fonction appelée prompt. La simple exécution de ce script (". \ Myscript.ps1") ne modifie pas l'invite. Cependant, l'exécution de la fonction ligne par ligne comme une commande le fait.

Donc, ce dont j'ai réellement besoin est quelque chose comme la sourcecommande pour PowerShell. C'est possible?

EDIT : ce message doit-il être déplacé vers Stackoverflow?

Clarification 1 : Étant donné que j'exécute cette fonction uniquement en fonction des besoins (c'est-à-dire pas pour chaque session PowerShell et / ou toujours), je ne souhaite pas stocker dans mon profil de démarrage PowerShell.

Sridhar Ratnakumar
la source
Remarque: vos deux commandes Bash sont différentes. Vous ne vouliez probablement pas avoir le point dans le second ou vous vouliez tous les deux avoir "./" (répertoire courant) au début du nom du script.
pause jusqu'à nouvel ordre.
Correction (en supprimant le point)
Sridhar Ratnakumar

Réponses:

29

Vous pouvez également " dot source " dans PowerShell. Il vous suffit de vous assurer que vous spécifiez le chemin complet. Donc, si le script que vous voulez charger est dans le répertoire local, vous feriez:

PS C:\>. .\myscript.ps1
zdan
la source
CECI est la bonne réponse :) le sourcing de points dans PowerShell fonctionne à peu près comme dans Bash
Jaykul
Je ne savais pas que tu pouvais faire ça. agréable.
DaveParillo
Whoa! Pourquoi je ne l'ai pas essayé avant? :)
Sridhar Ratnakumar
1
Existe-t-il de toute façon cela pourrait être fait avec un script cmd existant? Une exécution de script cmd a-t-elle entraîné la modification de l'environnement PowerShell?
peabody
1
Que faire si vous devez exécuter un .batfichier et modifier l'environnement?
Chloé