我是 powershell 新手,并尝试使用发布的示例脚本 here ( script itself )来计算文件哈希。我可以使用点符号让它工作
. 'E:\Tools\Power Shell Scripts\Get-FileHash.ps1' E:\testfile.bin
但是我希望能够像作者一样使用它,只需输入
Get-Filehash E:\testfile.bin
我发现我能做到
function Get-FileHash {. 'E:\Tools\Power Shell Scripts\Get-FileHash.ps1'}
但这行为不正确,当我执行 Get-Filehash E:\testfile.bin
我需要在我的配置文件脚本中添加什么才能正确加载此脚本并且 Get-Help Get-FileHash
正常工作?
最佳答案
实际上,这种情况下的最佳实践是将函数放在模块中,而不是脚本中。尽管这听起来很不祥,但它意味着将包含的文件从 .ps1
重命名。扩展至.psm1
扩展名,然后将其存储在您的文档目录 ( ...\Documents\WindowsPowerShell\Modules\<Name>\<Name>.psm1
) 下,其中 <Name>
是文件的基本名称。
然后使用以下命令加载模块:
Import-Module Name
加载后,您可以调用模块中包含的函数并且 Get-Help 也将识别这些命令。除此之外,模块提供封装,因此一个文件不会污染另一个文件的上下文空间。
顺便说一句,您不需要用 C# 编写 cmdlet;您也可以在 PowerShell 本身中编写它们。举例来说,看看我的 open-source PowerShell library全部用 PowerShell 编写,并包含 Get-Help
认可的大量帮助.
要真正充分利用函数和模块的好处,还有很多事情需要了解——我建议您参阅我的文章 Down the Rabbit Hole-A Study in PowerShell Pipelines, Functions, and Parameters在 Simple-Talk.com 上。
关于powershell - 加载powershell脚本以便随时调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9104687/