我有自定义函数列表,以及将由函数使用的另一个配置文件,我的目标是在远程服务器上运行这些函数,考虑到某些函数从其中调用其他函数,这就是为什么我不能使用以下方法调用本地会话中加载的函数。
invoke-command -scriptblock ${function:foo}
是否可以从中创建一个模块,然后在系统启动时自动导入该模块而不是用户登录。 关于如何实现主要目标的任何建议?
答案 0 :(得分:1)
好吧,如果你想在系统上安装Powershell Module,只需将它复制到适当的目录。
为程序文件中的所有用户安装模块 如果您希望模块可供计算机上的所有用户帐户使用,请将该模块安装在Program Files位置。
$EnvProgramFiles\WindowsPowerShell\Modules\<Module Folder>\<Module Files>
参考:https://msdn.microsoft.com/en-us/library/dd878350(v=vs.85).aspx
尽可能在PSModulePath
中安装模块,将所有模块安装在PSModulePath环境变量中列出的路径中,或将模块路径添加到PSModulePath
环境变量值。
PSModulePath
环境变量($Env:PSModulePath
)包含Windows PowerShell模块的位置。 Cmdlet依赖此环境变量的值来查找模块
默认情况下,PSModulePath
环境变量值包含以下系统和用户模块目录,但您可以添加和编辑该值。
$PSHome\Modules (%Windir%\System32\WindowsPowerShell\v1.0\Modules)
# This location is reserved for modules that ship with Windows. Do not install modules to this location.
$Home\Documents\WindowsPowerShell\Modules (%UserProfile%\Documents\WindowsPowerShell\Modules)
$Env:ProgramFiles\WindowsPowerShell\Modules (%ProgramFiles%\WindowsPowerShell\Modules)