通过OpenSSH连接Windows主机打开Word文档失败求助
远程SSH执行PowerShell打开Word文档失败问题
问题情况
- 本地运行以下PowerShell代码,能正常打开Word文档,
$doc不为空:
$word.Visible = $false $doc = $word.Documents.Open($file.Fullname) $null -ne $doc
- 通过OpenSSH远程连接Windows主机执行相同代码时,
$doc为空,而且$error里也没错误提示 - 试过用psexec远程执行脚本,同样没成功,命令是:
ssh user@172.18.0.2 "psexec -i 1 -d powershell.exe 'opendoc.ps1'"
原因
SSH远程会话默认是无桌面的服务会话,而Word这类Office软件哪怕设了Visible = $false,也依赖桌面会话的UI组件才能正常运行。另外psexec指定的会话ID可能不对,或者权限不够切换到用户桌面会话。
解决办法
- 确认远程主机的用户会话ID
在远程主机本地执行query session,找到当前登录用户的会话ID(通常是1,但可能有变化,以实际输出为准) - 修正psexec命令
替换占位符后执行:
注意:脚本里的ssh user@172.18.0.2 "psexec -i <会话ID> -u <用户名> -p <密码> powershell.exe -ExecutionPolicy Bypass -File \"C:\脚本绝对路径\opendoc.ps1\""$file.Fullname必须用绝对路径,别用相对路径 - 给OpenSSH服务开启桌面交互(仅测试环境用)
远程主机打开services.msc,找到「OpenSSH SSH Server」服务,右键属性→登录,勾选「允许服务与桌面交互」,重启服务。这个方法有安全风险,生产环境别用 - 改用Open XML SDK处理文档(推荐)
直接用Word COM对象依赖桌面会话,换用Open XML SDK不需要启动Word进程,更稳定。先安装模块:
然后用这段代码打开文档:Install-Module -Name DocumentFormat.OpenXml -Scope CurrentUser$doc = [DocumentFormat.OpenXml.Packaging.WordprocessingDocument]::Open($file.Fullname, $false) $null -ne $doc
内容的提问来源于stack exchange,提问作者Lizbeth
相关产品推荐
相关产品推荐

