约 2540 字

约 13 分钟

#模块

#简介

模块是把函数、cmdlet、变量和别名组织在一起的单元。PowerShell 自身的大部分命令都以模块形式提供,模块可以按需加载、分发和复用。

#查看与导入模块

查看当前会话已加载的模块:

> Get-Module

列出系统中所有可用的模块:

> Get-Module -ListAvailable

导入模块后即可使用其中的命令:

> Import-Module ./MyModule.psm1

PowerShell 3.0 之后,调用模块中的命令时通常会自动导入对应模块(自动加载),一般无需手动 Import-Module。

#脚本模块

脚本模块是扩展名为 .psm1 的文件,内容是普通的 PowerShell 代码:

MyModule.psm1

function Get-Greeting {
    param([string]$Name = "World")
    "Hello, $Name"
}

function Get-Farewell {
    param([string]$Name = "World")
    "Goodbye, $Name"
}

导入并使用:

> Import-Module ./MyModule.psm1
> Get-Greeting -Name "Tom"
Hello, Tom

#Export-ModuleMember

默认情况下,脚本模块中定义的函数在导入后都可用。使用 Export-ModuleMember 可以精确控制导出内容:

MyModule.psm1

function Get-Greeting {
    param([string]$Name = "World")
    "Hello, $Name"
}

function Get-InternalHelper {
    "仅供内部使用"
}

Export-ModuleMember -Function Get-Greeting

这样 Get-InternalHelper 不会暴露给调用者。

#模块清单

模块清单是扩展名为 .psd1 的数据文件,用于描述模块的元数据:

MyModule.psd1

@{
    RootModule        = 'MyModule.psm1'
    ModuleVersion     = '1.0.0'
    GUID              = '00000000-0000-0000-0000-000000000000'
    Author            = 'Example'
    Description       = '示例模块'
    PowerShellVersion = '7.0'
    FunctionsToExport = @('Get-Greeting')
}

模块目录的典型结构:

MyModule/
├── MyModule.psd1
└── MyModule.psm1

使用 New-ModuleManifest 可以生成清单模板,使用 Test-ModuleManifest 可以校验清单。

#PSModulePath

$env:PSModulePath 列出了 PowerShell 搜索模块的目录,多个路径之间用平台对应的分隔符连接:

> $env:PSModulePath -split [System.IO.Path]::PathSeparator

将模块放入这些目录之一,Get-Module -ListAvailable 就能自动发现它。

#查找与安装模块

PowerShell Gallery 是在线模块仓库,可以使用以下命令查找和安装模块:

> Find-Module -Name PSReadLine
> Install-Module -Name PSReadLine -Scope CurrentUser
  • Find-Module 搜索仓库中的模块。
  • Install-Module 下载并安装模块。
  • 首次使用可能需要安装并信任 PowerShellGet 或 PSResourceGet。

#推荐阅读

更新: 2026/11/2

作者: planc

创建: 2026/11/2