使用Posh-SSH获取SFTP服务器上文件的大小
获取SFTP文件大小(无需下载完整文件)
不用纠结Get-SFTPContent了——这个命令本来就是用来读取文件内容的,哪怕你只取它的.Length属性,它也会先把整个文件的字节数组加载到内存里,这就是为什么600MB的文件会出问题。其实Posh-SSH提供了更高效的方式,直接获取文件元数据就行:
正确的操作步骤
- 确保你已经通过
New-SFTPSession建立了有效的SFTP会话(假设会话对象存在$session变量里)。 - 使用
Get-SFTPItem命令获取文件的元信息,这个命令不会下载文件内容,只会拉取文件的属性数据:
# 替换成你的远程文件路径和会话ID $remoteFilePath = "/path/to/your/largefile.ext" $fileMetadata = Get-SFTPItem -SessionId $session.SessionId -Path $remoteFilePath # 提取文件大小(单位:字节) $fileSizeBytes = $fileMetadata.Length
- 如果需要转换成更易读的单位(比如MB),可以做个简单的计算:
$fileSizeMB = [math]::Round($fileSizeBytes / 1MB, 2) Write-Host "目标文件大小:$fileSizeMB MB"
为什么这个方法更优
Get-SFTPItem本质是调用SFTP协议的STAT命令,只请求文件的属性信息(大小、修改时间、权限等),传输的数据量极小,完全不会占用大量内存来加载大文件内容,完美解决你的痛点。
内容的提问来源于stack exchange,提问作者Daniel Williams
相关产品推荐
相关产品推荐

