PowerShell -如何使用没有路径的脚本在当前路径下工作?

cyvaqqii  于 2023-01-02  发布在  Shell
关注(0)|答案(1)|浏览(168)

我先向你道歉,我不太清楚该用什么方式表达我的问题。我想做的是...
我创建了一个名为beginPHP.ps1的脚本,它位于c:\users\USERNAME\scripts目录中。
我用$env:path += c:\users\USERNAME\scripts添加了上述目录,当我做$env:path时它会显示出来。我还确保它会显示在我的Environment Variables(和System Variables)中。
我打开了PowerShell(v7),并转到了我希望RUN脚本所在的目录(而不是它所在的目录)。在本例中为C:\xampp\htdocs\wip。运行命令beginPHP会出现以下错误:

beginPHP: The term 'beginPHP' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

这就是我要寻找的--为了能够只键入脚本名称并让它在当前的-Path下运行,我遗漏了什么?
我确实检查了how-to-run-a-powershell-script,但这需要你在脚本所在的位置。我希望在多个位置多次使用这个脚本(否则我就不麻烦创建它了)。
/*******************************************************/
FYI -运行c:\users\USERNAME\scripts\beginPHP确实有效,所以脚本是可用的。我仍然在尝试找出如何不需要每次的路径。

vkc1a9a2

vkc1a9a21#

这应该可以解决您的问题:

$newPath = 'c:\users\USERNAME\scripts'

[System.Environment]::SetEnvironmentVariable(
    'Path',
    [System.Environment]::GetEnvironmentVariable('Path') + ';' + $newPath,
    [System.EnvironmentVariableTarget]::User # or `::Machine` up to you
)

问题是在$env:Path中存储的路径不能在会话间持续。如果你想让它持续,你可以使用[System.Environment]::SetEnvironmentVariable method。你也可以考虑把你的ps1变成psm1,并使用Module来代替。

相关问题