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

如何仅通过WinRM端口使用PowerShell远程递归列出文件?

递归获取远程目录文件列表(WinRM替代SMB方案)

Got it!既然SMB共享用不了,咱们完全可以借助WinRM的PowerShell远程执行能力来实现需求。下面是两种实用的方案,你可以根据场景选择:

方案一:直接远程执行并返回结果

用Invoke-Command远程调用目标主机的Get-ChildItem命令,递归列出指定目录下的所有文件:

# 基础版,使用当前登录的凭据访问远程主机
Invoke-Command -ComputerName "远程主机名/IP" -ScriptBlock { 
    Get-ChildItem -Path "C:\你的目标目录" -Recurse -File | Select-Object FullName
}

如果需要用特定账号访问(比如当前账号无权限),先获取凭据再执行:

$remoteCred = Get-Credential -Message "请输入远程主机的授权账号信息"
Invoke-Command -ComputerName "远程主机名/IP" -Credential $remoteCred -ScriptBlock { 
    Get-ChildItem -Path "C:\你的目标目录" -Recurse -File | Select-Object FullName
}

小提示:-Recurse负责递归遍历所有子目录,-File只筛选文件(排除文件夹),Select-Object FullName输出完整文件路径,方便你直接查看或后续处理。

方案二:将结果保存到本地文件

如果需要把远程文件列表持久化到本地电脑的文件中,直接在命令后追加导出逻辑即可:

Invoke-Command -ComputerName "远程主机名/IP" -ScriptBlock { 
    Get-ChildItem -Path "C:\你的目标目录" -Recurse -File 
} | Select-Object FullName | Out-File -FilePath "C:\本地保存路径\远程文件列表.txt" -Encoding UTF8

关键注意事项

  • 确保远程主机已开启WinRM服务:管理员可在远程主机上执行Enable-PSRemoting -Force完成配置(首次执行会自动配置防火墙规则,允许WinRM端口)。
  • 你的账号需要拥有远程主机的远程执行权限:通常是管理员组,或者Remote Management Users组的成员。
  • 防火墙放行WinRM端口:默认HTTP端口是5985,HTTPS是5986,确保本地和远程主机的防火墙都允许这两个端口的流量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:38:08