powershell - 加载powershell脚本以便随时调用

标签 powershell powershell-2.0

我是 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/

相关文章:

docker - Powershell,等待第一个进程结束

windows - 使用输出运算符在 powershell 中命名 .txt 文件

windows - 电源外壳 : ftp directory listing (help on a script)

xml - 如果使用 PowerShell 不存在,如何添加属性?

powershell - 强制在 powershell 脚本中立即求值(按值复制变量,而不是引用)

powershell - PowerShell 中的 ParameterSetName 检测是否匹配 ValueFromPipeline 输入对象类型?

java - Powershell 打开窗口(来自 Java.Runtime.exec)

sql - 无法使用带有 -InputObject 参数的 SQLPS CmdLet Backup-SQLDatabase

来自高级 (cmdlet) 功能的 PowerShell Add-PSSnapIn

powershell - 使用 Tee-Object 进行重定向