Powershell函数名称为“主要”奇怪效应

时间:2014-02-26 10:43:00

标签: powershell

查看此代码:

main

function main
{
    cls
    Write-Host "hi"
}

如果您是第一次运行它,将加载Windows鼠标属性窗口。

再次运行它会显示“hi”。

为什么会这样?

我知道main.cpl是Mouse Properties窗口。但是为什么它只是第一次打开,然后第二次Powershell意识到你实际上想要调用“主要”功能。

如果您想要鼠标属性窗口,那么Powershell不应该检测到这个并要求您编写main.cpl吗?

1 个答案:

答案 0 :(得分:6)

因为在第一次调用main时,没有函数main,所以PowerShell正在寻找另一个名为main的东西来执行。第二次它知道main函数,并且优先于main.cpl。

解决方案很简单。在第一次调用之前声明main函数。

function main
{
    cls
    Write-Host "hi"
}

main

我没有回答为什么当你输入main时PowerShell决定执行main.cpl,但是如果你在$ env:path中有它,那么main.exe也是如此。