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

在PowerShell中导入Posh-SSH模块时无法导入全部Cmdlet

解决Windows Server 2012 R2上Posh-SSH模块导入不完整的问题

我帮你梳理下这个问题的常见原因和解决办法,咱们一步步来排查:

1. 先检查PowerShell版本兼容性

Windows Server 2012 R2默认带的是PowerShell 4.0,而新版Posh-SSH大概率要求PowerShell 5.1及以上。先在服务器上运行这个命令确认版本:

$PSVersionTable.PSVersion

如果显示是4.0,建议先升级到PowerShell 5.1——升级后很多模块兼容性问题都会解决。

2. 确认模块文件是否完整

你用Save-Module下载的模块可能存在依赖缺失,或者传输到服务器时文件损坏/遗漏。可以这么操作:

  • 本地重新下载,强制覆盖旧文件:
    Save-Module -Name Posh-SSH -Path C:\Temp\PoshSSH -Force
    
  • 把本地C:\Temp\PoshSSH下的整个Posh-SSH文件夹完整复制到服务器的PowerShell模块路径,比如:
    • 全局路径:C:\Program Files\WindowsPowerShell\Modules\
    • 用户路径:C:\Users\<你的账号>\Documents\WindowsPowerShell\Modules\
      确保服务器上的模块文件夹结构和本地完全一致,不要只复制部分文件。

3. 带详细日志导入模块,排查报错

试试用Verbose模式导入模块,看有没有隐藏的报错信息:

Import-Module C:\Path\To\Posh-SSH -Force -Verbose

如果输出里提示缺少依赖(比如SSH.NET模块),那你需要把依赖模块也一起复制到服务器的模块路径里——Save-Module其实会自动下载依赖,但有时候可能因为网络问题漏了,手动检查下本地下载的文件夹里有没有其他相关模块,一起传过去。

4. 检查权限与模块清单

  • 确认服务器上运行PowerShell的账号有模块文件夹的读取和执行权限,右键文件夹→属性→安全选项卡,给账号加对应权限。
  • 打开服务器上Posh-SSH文件夹里的Posh-SSH.psd1文件,搜索CmdletsToExport,看看里面有没有Get-SFTPFile、Set-SFTPFile、New-SFTPSession这些命令。如果没有,说明你下载的模块版本不对,可以尝试下载兼容PS4的旧版本,比如:
    Save-Module -Name Posh-SSH -Path C:\Temp\PoshSSH -RequiredVersion 2.3.0
    
    这个版本对PS4的兼容性更好,大概率能包含你需要的Cmdlet。

附你提供的问题截图:
导入Posh-SSH后缺失关键Cmdlet的截图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:16:22