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

获取网络中所有可访问文件服务器域名的PowerShell命令或工具求助

获取网络中所有可访问文件服务器域名的PowerShell命令或工具求助

看起来你遇到的情况挺棘手的——明明能访问部分文件服务器,却没法找到所有的域名,而且常规的net view、Get-PSDrives这些命令都不管用对吧?我帮你整理几个更针对性的方法,你可以挨个试试:

  • 查看已建立的SMB连接
    试试Get-SmbConnection这个命令,它会列出你当前已经通过SMB连接过的所有服务器,包括它们的完整名称。如果只想看服务器名,可以再加个筛选:Get-SmbConnection | Select-Object -Unique ServerName。说不定能从中发现你没注意到的服务器域名。

  • 用NetBIOS扫描网络设备
    如果你的网络里还在用NetBIOS协议,可以试试nbtstat命令。比如你知道某个服务器的IP,运行nbtstat -a [服务器IP]就能获取它的NetBIOS名称;要是想扫描整个网段,可以用一段PowerShell循环来实现:

    # 获取本地IPv4地址对应的网段
    $localIP = (Get-NetIPAddress -AddressFamily IPv4 -InterfaceAlias "以太网").IPAddress
    $subnetPrefix = $localIP.Substring(0, $localIP.LastIndexOf('.'))
    
    # 扫描网段内所有IP的NetBIOS信息
    for ($i=1; $i -le 254; $i++) {
        $targetIP = "$subnetPrefix.$i"
        # 尝试获取目标IP的NetBIOS信息
        $nbtOutput = nbtstat -a $targetIP 2>&1
        if ($LASTEXITCODE -eq 0) {
            $serverName = ($nbtOutput | Select-String "NetBIOS Remote Machine Name").Line.Split(':')[-1].Trim()
            Write-Host "找到文件服务器:\\$serverName\ (IP: $targetIP)"
        }
    }
    

    不过要注意,这个扫描速度可能有点慢,而且如果服务器禁用了NetBIOS,就没法被探测到。

  • 查询域内的服务器(如果是域环境)
    要是你的网络是域环境,而且你有域权限,可以先查已知服务器所在的域:
    Get-CimInstance Win32_ComputerSystem -ComputerName [已知服务器名] | Select-Object Name, Domain
    拿到域名后,再用Get-ADComputer -Filter {OperatingSystem -like "*Server*"}来列出域内所有服务器,这样就能找到所有文件服务器的名称了。不过这个方法需要你安装Active Directory模块。

  • 用第三方扫描工具
    如果不想折腾命令,可以试试像Advanced IP Scanner这样的工具,它能快速扫描整个网段,显示所有在线设备的名称、IP和共享资源,操作起来很直观,说不定能帮你找到所有隐藏的文件服务器。

另外,你之前试过的那些命令效果有限的原因也很明确:net view依赖网络浏览服务,很多现代网络会禁用这个服务;Get-PSDrives只显示已经映射的驱动器;Get-SmbShare和Get-SmbMapping也只针对已连接的共享或本地共享,所以看不到未连接的服务器。

备注:内容来源于stack exchange,提问作者otf4

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 15:59:29