我需要一种方法来在 Windows 7 系统上使用 PowerShell 枚举远程非 Windows 系统的 SMB 共享。
我正在检查的文件服务器没有运行 Windows 操作系统。但是,我需要使用 Windows 7 系统上的 PowerShell 获取该服务器上的 SMB 共享列表,以便我可以将该列表传递到脚本中进行进一步处理。
我发现使用 PowerShell 枚举远程系统上的 SMB 共享的大多数解决方案都使用了我无法使用的两个选项之一。
- 与 SMB 相关的 PowerShell 模块。这将会很棒,但是它们直到 Windows 8.1 才可用。
- WMI。这仅适用于基于 Windows 的远程目标,允许远程 WMI 访问。我遇到的情况不是这样的。
我还有什么其他选择?
假设使用原始 Windows 7 SP 1。第三方软件/模块不是一种选择。我可以使用 PowerShell 4.0,但最好兼容到 2.0。
答案1
您可以使用 WinNT ADSI 提供程序来执行此操作:
$lanman = [adsi]"WinNT://server123/lanmanserver,fileservice"
$lanman.children | foreach {[string]($_.name + "`t" + $_.path)}