应该将 PowerShell 函数定义放在哪里才能自动获取它?

应该将 PowerShell 函数定义放在哪里才能自动获取它?

给出一个简单的 PowerShell 函数:

function gpg {
    C:\Program files\GNU\GnuPG\gpgcmd.exe $args
}

我应该把这个函数定义放在哪里才能gpg作为 PowerShell 命令使用?

答案1

把它放在你的PowerShell 配置文件

配置文件始终会在 PowerShell 启动时加载,除非您使用参数调用 PowerShell -NoProfile,这种情况(至少在我的网络中)很少见。因此,无论何时 PowerShell 启动,您都可以立即使用您的函数。

如果您想为多台计算机创建 PowerShell 配置文件,我会使用 GPO 将配置文件从源路径部署到目标计算机。

请记住,PowerShell 和 PowerShell_ISE 有单独的配置文件

答案2

正如@SimonS 提到的,一个选项是您可以将其放入您的配置文件中。对于需要简单功能来帮助更轻松地运行单个命令的情况,配置文件可能是正确的选择。但我想提一下另一个选项。

如果你的系统上运行的 powershell 版本高于 3.0,那么另一种选择是将你的函数或函数放在Powershell 模块. 模块路径内的模块将是自动加载,并且所有导出的函数都将可用。您创建的模块需要位于模块路径 ( $env:psmodulePath) 中,系统范围模块的理想位置是C:\Program Files\WindowsPowerShell\Modules

您确实不想在配置文件中放入太多内容。首先,启动 Powershell 时会加载配置文件,您定义的内容越多,对 Powershell 的加载速度就会产生一定影响。使用 PS 远程处理时不会自动加载配置文件,但目标系统路径中的模块会自动加载配置文件。

相关内容