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

无法从特定目录运行经nssm.exe注册为服务的.ps1脚本

问题排查与解决步骤

1. 本地系统账户的目录权限缺失

你自身拥有目录权限,但服务是以本地系统账户运行的,该账户可能未被授予目标目录的访问权限:

  • 操作流程:右键C:\Program Files\WindowsPowerShell\Modules\test → 「属性」→ 「安全」→ 「编辑」→ 「添加」,输入NT AUTHORITY\SYSTEM,为其分配「读取&执行」「列出文件夹内容」「读取」权限(或直接给完全控制权限),应用设置后重启服务。

2. 含空格路径的命令解析错误

C:\Program Files路径包含空格,nssm调用PowerShell时若未正确包裹路径,会导致命令拆分失败:

  • 正确的nssm配置命令示例:
    nssm install TestService "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
    nssm set TestService Arguments "-ExecutionPolicy Bypass -File `"C:\Program Files\WindowsPowerShell\Modules\test\yourscript.ps1`""
    
    注意:脚本路径需用双引号包裹,且在nssm的Arguments参数里要转义双引号(用")。

3. PowerShell执行策略限制

本地系统账户的执行策略可能比你的用户账户更严格,需显式绕过:

  • 在服务的Arguments参数中必须添加-ExecutionPolicy Bypass,确保脚本能被正常执行。

4. 脚本相对路径依赖失效

若脚本内使用了相对路径,移动到新目录后相对路径会指向错误位置,导致脚本执行失败进而触发服务暂停:

  • 检查脚本内的所有路径,全部改为绝对路径;或在脚本开头添加工作目录设置:
    Set-Location "C:\Program Files\WindowsPowerShell\Modules\test"
    

5. 启用nssm日志排查具体错误

通过配置nssm的日志输出,可直接查看服务启动失败的细节:

nssm set TestService AppStdout "C:\test\service_stdout.log"
nssm set TestService AppStderr "C:\test\service_stderr.log"

启动服务后查看这两个日志文件,即可定位具体报错原因。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 17:02:47