Notepad++运行PowerShell脚本需同时满足三点:单引号包裹$(FULL_CURRENT_PATH)防变量展开、cd '$(CURRENT_DIRECTORY)'显式切换工作目录、-ExecutionPolicy Bypass临时绕过执行策略,缺一不可。

PowerShell脚本在Notepad++里点一下没反应?先看这三处
不是脚本写错了,而是 Notepad++ 调用 powershell.exe 时漏了关键控制项。几乎所有“静默失败”“报错找不到文件”“中文路径乱码”,都卡在这三点:'$(FULL_CURRENT_PATH)' 必须单引号包裹、cd '$(CURRENT_DIRECTORY)' 必须显式切换目录、-ExecutionPolicy Bypass 必须带上。
-
$(FULL_CURRENT_PATH)在双引号里会被 PowerShell 当作变量展开(结果为空),命令变成powershell -File '',直接静默退出 - PowerShell 启动默认在
$HOME,不是你脚本所在目录;Import-Module ./lib.psm1或Get-Content config.json全部失败,报错Cannot find path - 即使脚本语法完全正确,也会被拦截,报错:
File ... cannot be loaded because running scripts is disabled on this system.
Run 对话框里怎么填才真正能跑
打开 Run → Run…(F5),输入以下任一命令——区别在于是否需要调试、是否保留窗口:
- 最简可用:
powershell -ExecutionPolicy Bypass -File '$(FULL_CURRENT_PATH)'(执行完就关窗) - 适合调试:
powershell -noexit -ExecutionPolicy Bypass -Command "cd '$(CURRENT_DIRECTORY)'; . '$(FULL_CURRENT_PATH)'"(.是点源操作符,比Invoke-Expression安全,且保持窗口打开) - 带错误捕获(推荐):
powershell -noexit -ExecutionPolicy Bypass -Command "cd '$(CURRENT_DIRECTORY)'; & '$(FULL_CURRENT_PATH)'; if ($?) { Write-Host '✅ 执行成功' -Fore Green } else { Write-Host '❌ 执行失败' -Fore Red }"
⚠️ 注意:'$(FULL_CURRENT_PATH)' 的单引号不能少,整个命令字符串仍需用英文双引号包住(F5对话框里输入时);路径含空格或中文时,不加引号会截断或乱码。
为什么.ps1文件打开后全是灰色?语法高亮失效
Notepad++ 7.9+ 默认移除了内置的 PowerShell 语言定义,.ps1 文件不再自动高亮——这不是插件没装好,而是根本没绑定语言。
- 手动绑定:菜单
Language → Define your language,检查左侧列表是否有PowerShell;有就选中它,点右下角Ext.,填入ps1 psd1 psm1(空格分隔) - 没有
PowerShell条目?去官方 GitHub 下载PowerShell.xml,再通过Define your language → Import加载 - 别信自动识别:以
@'开头或含%的行容易被误判为 Batch;强制指定语言:Language → P → PowerShell(不是 Batch,也不是 Other) - 保存必须用
UTF-8(无BOM),否则中文注释可能乱码,甚至影响脚本执行
执行策略绕过安全吗?要不要改全局设置
-ExecutionPolicy Bypass 是唯一实用解法,它只对本次 powershell.exe 进程生效,不需要管理员权限,也不改变系统策略。
- 别用
Set-ExecutionPolicy RemoteSigned:普通用户没权限,强行运行会失败;即使成功,也会影响所有 PowerShell 会话,带来潜在风险 -
Bypass不等于放行所有脚本——它只是跳过当前会话的策略检查,脚本本身仍受 Windows Defender SmartScreen、AMSI 等机制监控 - 调试完建议查当前策略:
Get-ExecutionPolicy;若之前是RemoteSigned或AllSigned,别留着Bypass长期用
真正容易被忽略的是工作目录和引号嵌套层级:单引号包变量、双引号包整个命令、路径含空格必须引起来——这三个引号用错一个,脚本就进黑洞。


















