PowerShell脚本获取SFTP服务器指定目录文件列表失败问题咨询
常见问题排查点
- 首先确认你使用的SFTP PowerShell模块的正确调用规则:绝大多数场景下你用的
Get-SftpChildItem属于Posh-SSH模块,该命令不支持直接传入-Host/-Password/-Username这类参数,必须先建立SFTP会话后再调用命令,错误的参数传递会导致命令静默返回空结果。
正确的调用示例如下:
# 先安装模块(仅首次运行需要) Install-Module -Name Posh-SSH -Scope CurrentUser # 构建凭据 $cred = Get-Credential -UserName myusername -Message "输入SFTP密码" # 建立SFTP会话 $session = New-SFTPSession -ComputerName mysftpserver -Port 22 -Credential $cred # 获取目录下文件 $files = Get-SFTPChildItem -SFTPSession $session -Path "/MySFTPFolder/outbound/" -File # 遍历文件 ForEach ($f in $files) { "test" | Out-File $ConfigFile -Append } # 用完关闭会话 Remove-SFTPSession -SFTPSession $session
- 检查SFTP路径的大小写匹配:绝大多数SFTP服务端基于Linux,路径大小写敏感,需确认
/MySFTPFolder/outbound/的拼写、大小写和服务端实际路径完全一致。 - 确认账号权限:你使用的SFTP账号需要对目标
outbound目录具备可读权限,没有读权限时命令也会返回空列表。 - 检查参数补充:如果目标文件是隐藏属性,可添加
-Force参数强制读取;如果需要同时读取子目录内容,可添加-Recurse参数。 - 特殊字符转义:如果密码包含
$、&、空格等PowerShell特殊字符,必须用单引号包裹密码字符串,避免被PowerShell解析为特殊变量或指令。 - 增加调试步骤:可以在获取
$files后添加一行$files | Out-Host直接输出结果,确认是获取文件阶段失败还是后续遍历逻辑的问题。
内容的提问来源于stack exchange,提问作者Tremor
相关产品推荐
相关产品推荐

