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

PowerShell中using module ./为何指向用户目录而非执行目录?

PowerShell using module相对路径失效问题解决

问题根源

using module语句是在PowerShell的代码解析阶段执行的,这个阶段的工作目录默认是当前用户的主目录(比如你的C:\Users\jreddy),而不是脚本实际存放的目录。这就导致你用./personClass.psm1时,PowerShell会去用户目录找模块,自然找不到同目录下的文件。

可行解决方案

方案1:用$PSScriptRoot构建绝对路径(推荐)

直接修改test.ps1里的模块加载语句,用PowerShell内置的$PSScriptRoot变量(自动指向当前脚本所在的绝对路径)拼接模块路径:

using module "$PSScriptRoot/personClass.psm1"

不管你从哪个目录运行test.ps1,这个变量都会准确定位到脚本所在文件夹,确保模块路径正确。

方案2:先切换工作目录再加载

如果不想用$PSScriptRoot,可以先切换到脚本所在目录,再加载模块:

Set-Location $PSScriptRoot
using module ./personClass.psm1

注意:这种方式会改变当前PowerShell会话的工作目录,可能影响后续执行的其他命令,仅适合简单场景。

方案3:将模块放入默认模块目录

如果这个模块需要被多个脚本调用,可以把personClass.psm1放到PowerShell默认的模块目录中:

  • 当前用户专属目录:C:\Users\jreddy\Documents\WindowsPowerShell\Modules\personClass(要新建和模块同名的文件夹)
  • 系统全局目录:C:\Program Files\WindowsPowerShell\Modules\personClass
    之后直接用模块名加载即可:
using module personClass

这种方式适合通用模块,临时测试的话还是方案1更便捷。

内容的提问来源于stack exchange,提问作者Jeff Reddy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 01:52:05