【发布时间】:2021-02-14 02:13:03
【问题描述】:
我有一个 ps1 文件(名为 NPScript.ps1),其中包含一个简单的函数,我在 PowerShell(运行 Windows 10)中用作 cmdlet。
function add-np() {
Set-Location C:\Users\emers\Desktop\Code\Projects
python.exe C:\Users\emers\Desktop\Code\mybin\NPPythonScript.py
}
当我在 PowerShell 中调用 add-np 时,第一部分,即 Set-Location 部分可以正常工作。我有一个 python 脚本(NPPythonScript.py),当调用此函数并且该部分(见上文)不工作时,我也想执行它,它当前不输出任何内容。 python 文件当前应该只打印 "Hello!"。当我运行这个时:
python.exe C:\Users\emers\Desktop\Code\mybin\NPPythonScript.py
或者这个:
python C:\Users\emers\Desktop\Code\mybin\NPPythonScript.py
在 PowerShell 中,它工作得很好并且可以正常打印。我试过把完整的路径放到 python.exe 没有运气。我尝试了一条 shebang 线,尽管据我所知这确实适用于 linux/OS 上下文。也许我没有正确实施......?我在这里看到了其他一些答案,表明如果 python.exe 的位置在我的路径中,我应该可以工作。由于我在 PowerShell 中运行的行很好,并且我的函数适用于其中的其他内容,所以我无法弄清楚,我已经为我的具体情况寻找了几个小时的答案。
我正在使用 add-np cmdlet 调用该函数,该 cmdlet 对于函数的第一部分(Set-Location 部分)工作得很好。
在评论者 VirtualScooter 的建议下,我做了一个简短的中间测试,看看该行是否在函数之外运行,所以我重新组织如下:
python.exe C:\Users\emers\Desktop\Code\mybin\NPPythonScript.py
function add-np() {
Set-Location C:\Users\emers\Desktop\Code\Projects
}
当我在 PowerShell 中运行文件时,这确实按预期运行,并且我的函数在调用时仍然可以将我移动到项目文件夹中。
【问题讨论】:
-
请注意,执行包含函数定义的
.ps1文件仅定义该函数,而不实际调用它。 -
我认为您可能需要考虑一个中间测试:在
.ps1文件中的函数定义前面添加带有python.exe运行脚本的行,以检查是否直接运行你的脚本有效。
标签: python windows powershell