如何查询PowerShell中自定义cmdlet所在的源文件路径
定位自定义cmdlet源文件的方法
PowerShell内置了原生命令可以直接查询已加载cmdlet的来源,不需要手动排查profile中引用的所有脚本文件。
直接获取源文件路径
针对你举例的Get-UserExpiry场景,执行下面一行命令就能直接返回该cmdlet存储的脚本完整路径:
(Get-Command Get-UserExpiry).ScriptBlock.File
只要这个cmdlet已经在当前PowerShell会话中加载完成,不管它是直接写在Microsoft.PowerShell_profile.ps1里,还是profile通过dot-source方式引用的其他任意路径(包括网络共享路径)的脚本里定义的,这条命令都能准确定位到对应的源文件,比如你举例的场景就会直接返回C:\User\Name\Documents\CustomCmds.ps1。
扩展查询用法
- 如果需要查看cmdlet的完整定义、参数、实现代码等全量信息,可以直接格式化输出Get-Command的返回结果:
返回结果中的Get-Command Get-UserExpiry | Format-List *File字段就是源文件路径,Definition字段会展示该cmdlet的完整实现代码。 - 如果记不清cmdlet的完整名称,可以用通配符做模糊匹配:
# 匹配所有名称包含UserExpiry的已加载命令 Get-Command *UserExpiry*
补充说明
这个查询方式对所有已加载的PowerShell命令生效:不管是内置cmdlet、通过模块安装的命令、还是自定义脚本里定义的函数都可以查询。如果查询的是编译生成的二进制cmdlet(比如打包为dll的模块),返回的路径就是对应dll文件的存储路径。
内容的提问来源于stack exchange,提问作者SecretReptoid
相关产品推荐
相关产品推荐

