notepad++调用powershell脚本需同时满足三点:单引号包裹$(full_current_path)变量防展开、cd '$(current_directory)'切换工作目录、-executionpolicy bypass临时绕过执行策略,缺一不可。

Notepad++ 本身不执行 PowerShell 脚本,它只负责调用系统 powershell.exe 进程;所有“点一下没反应”“报错找不到文件”“中文路径失效”,几乎都卡在引号、工作目录、执行策略这三点上。
PowerShell 路径变量必须用单引号包裹
Notepad++ 的 $(FULL_CURRENT_PATH) 在双引号里会被 PowerShell 当作变量展开(结果为空),导致命令变成 powershell -File '',静默失败。
- ✅ 正确写法:
powershell -ExecutionPolicy Bypass -File '$(FULL_CURRENT_PATH)' - ❌ 错误写法:
powershell -ExecutionPolicy Bypass -File "$(FULL_CURRENT_PATH)"(双引号触发变量解析) - ⚠️ 注意:单引号只包路径变量,整个命令字符串仍需用双引号围住(比如在「Run → Run…」对话框里输入时)
不显式 cd 就会找不到相对路径资源
PowerShell 启动后默认在 $HOME,不是脚本所在目录。Import-Module ./lib.psm1 或 Get-Content config.json 全部失败,错误是 Cannot find path。
ArcGIS for Android SDK 目前最新版本为10.2.5 从此版本开始ESRI不在提供Eclipse的插件支持,官方的帮助也针对于Android Studio的支持;本文档主要讲述的内容是最新版本ArcGIS For Android Eclipse环境配置;感兴趣的朋友可以过来看看
- ✅ 推荐组合:
powershell -noexit -ExecutionPolicy Bypass -Command "cd '$(CURRENT_DIRECTORY)'; . '$(FULL_CURRENT_PATH)'" -
.是点源操作符,比Invoke-Expression更安全,适合调试阶段 - 如果脚本依赖当前目录下的子目录或配置文件,漏掉
cd就必然报错
执行策略(ExecutionPolicy)必须绕过
即使脚本语法完全正确,也会被 Windows 拦截,报错:File … cannot be loaded because running scripts is disabled on this system.
- ✅ 唯一实用解法:
-ExecutionPolicy Bypass—— 仅对本次会话生效,无需管理员权限 - ❌ 别用
Set-ExecutionPolicy RemoteSigned:普通用户没权限,改了还影响全局 - ⚠️
Bypass不等于不安全,它只是临时放开限制;调试完建议手动恢复策略(Get-ExecutionPolicy查看当前值)
中文/空格路径必须加引号,且位置不能错
Notepad++ 的 $(FULL_CURRENT_PATH) 变量本身不含引号。路径含空格(如 C:\My Scripts\test.ps1)时,PowerShell 会把 C:\My 当成独立参数,报错:The term 'C:\My' is not recognized.
- ✅ 正确写法:
'$(FULL_CURRENT_PATH)'(单引号包裹整个变量) - ❌ 错误写法:
"$(FULL_CURRENT_PATH)"(双引号触发变量展开)或不加引号 - 中文路径同理:不加引号会导致乱码或截断,尤其在
-Command模式下更敏感
最容易被忽略的是语言高亮和编码:.ps1 文件默认不识别为 PowerShell 语法(7.9+ 版本移除了内置定义),且保存必须用 UTF-8 无 BOM;否则中文注释可能乱码,某些 Unicode 字符还会让 -ExecutionPolicy Bypass 失效。










