我正在尝试加载执行自定义cmdlet功能的PowerShell模块,但我无法加载...我已应用several previous {{3}的解决方案},但现在我只是围成一圈。以下是我到目前为止所做的规范以及返回的具体错误。请注意,由于我是PowerShell和一般编程的新手,因此我的问题不是文件路径问题而是我实际功能中的逻辑错误并不会让我感到惊讶:
我为自定义cmdlet创建了一个配置文件函数 从两个不同的路径打开项目文件:
function push-project( $project )
{
pushd ~/Documents/Visual Studio 2015/Projects/$project;
pushd ~/Documents/GitHub/$project;
}
New-Alias -Name pp -Value push-project;
我通过将函数保存为ProfileFunctions.psm1
来创建模块
在以下目录中:
~\Documents\WindowsPowerShell\Modules\ProfileFunctions\ProfileFunctions.psm1
要调用该函数,根据其语法,我在PS控制台窗口中键入pp $projectName
,但返回的错误标准无法识别:
pp : The term 'pp' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
- pp MyFirstApp
- ~~
- CategoryInfo : ObjectNotFound: (pp:String) [], CommandNotFoundException
FullyQualifiedErrorId : CommandNotFoundException
答案 0 :(得分:2)
我将您的代码复制并粘贴到我在这里的Windows 8.1计算机上。它工作得很好(除了文件夹名称不存在,因为我没有Visual Studio)。
可能会阻止您的模块工作的问题:
该文件实际上称为ProfileFunctions.psm1.ps1
或ProfileFunctions.psm1.txt
或其他内容。
“模块”文件夹保存在其他人的文档文件夹或“公共文档”文件夹中。
您不小心在文件夹名称中添加了空格(必须为WindowsPowerShell
,而不是Windows PowerShell
)。
答案 1 :(得分:1)
我认为你的问题是Alias pp不是从模块中导出的。
您可以在模块外部定义别名,或者使用。
从模块中明确地导出它Export-ModuleMember -Function pushproject -Alias pp
中查找更多详细信息