You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何列出PowerShell脚本.ps1文件中定义的所有函数?

列出PowerShell脚本文件中定义的所有函数

有几种实用方法可以实现这个需求,可根据场景选择:

方法1:不导入脚本,通过AST解析(推荐,无副作用)

利用PowerShell的抽象语法树(AST)直接解析脚本文件,无需导入即可提取所有函数定义,不会执行脚本代码,安全可靠:

$scriptPath = ".\your-script.ps1"
# 解析脚本文件生成AST
$ast = [System.Management.Automation.Language.Parser]::ParseFile($scriptPath, [ref]$null, [ref]$null)
# 查找所有函数定义节点并提取信息
$ast.FindAll({ $args[0] -is [System.Management.Automation.Language.FunctionDefinitionAst] }, $true) |
  Select-Object Name, StartLineNumber

输出会包含函数名和对应的起始行号,方便定位代码位置。

方法2:对比导入前后的函数列表(已导入脚本时使用)

如果已经通过点运算符导入了脚本,可以通过对比导入前后的函数集合,找出脚本新增的函数:

# 记录导入前的系统函数列表
$preImport = Get-ChildItem Function:\
# 点源导入目标脚本
. .\your-script.ps1
# 对比得到脚本导入的新函数
Compare-Object -ReferenceObject $preImport -DifferenceObject (Get-ChildItem Function:\) -Property Name |
  Where-Object SideIndicator -eq '=>' |
  Select-Object -ExpandProperty Name

注意:如果脚本修改了已存在的函数,这种方法无法检测到,仅适用于新增函数的场景。

方法3:正则匹配(简单场景应急用)

如果脚本结构简单(函数都是单行function 函数名 { ... }格式,无注释或字符串中的干扰内容),可以用正则快速提取:

Get-Content ".\your-script.ps1" |
  Select-String '^function\s+(\w+)' |
  ForEach-Object { $_.Matches.Groups[1].Value }

这种方法局限性大,容易误匹配或漏匹配,仅适合临时快速查看。

内容的提问来源于stack exchange,提问作者Fajela Tajkiya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 23:25:24