我目前每天早上使用批处理脚本来挂载我的网络共享:
NET USE * /DELETE /Y
NET USE Z: \\<IP>\<SHARE> <AUTHENTICATION> /persistent:no
...
当我在网络上时,这没问题,但在异地时就不行了。我们有一个指向我们公共 IP 的域名,然后端口转发开始生效,所以理论上,我可以
NET USE * /DELETE /Y
NET USE Z: \\fqdn.com\<SHARE> <AUTHENTICATION> /persistent:no
...
除了在批处理脚本或 Windows UI 中不起作用之外。
我认为有一种方法可以获取 fqdn.com 的 IP(它也方便地存储在 fqdn2.com/ip.txt 中),但这远远超出了我的批处理经验。
非常感谢您的任何意见。
答案1
使用 PowerShell 可以使任务变得稍微简单一些,因为您可以充分利用 .Net 框架的全部功能。有一个名为 System.Net.WebClient 的类可用于下载文件并获取其内容。您可以使用类似于下面的 PowerShell 脚本来检索 ip.txt 文件的内容,然后执行 cmd.exe 命令。
$fqdn = "fqdn domain name goes here"
$url = "http://$fqdn/ip.txt"
$fqdnIp = (new-object System.Net.WebClient).DownloadString($url)
Write-Host -ForegroundColor Green "Retrieved contents of ${url}: $fqdnIp"
$cmd = "`"NET USE * /DELETE /Y`""
&cmd.exe /c $cmd
$cmd = "`"NET USE Z: \\$fqdnIp\<SHARE> <AUTHENTICATION> /persistent:no`""
&cmd.exe /c $cmd
答案2
只是因为你可以去网站在 fqdn.com,这不允许您访问您的内部网络或内部域。端口 80 是 HTTP(网站)的标准端口,它从公共 IP 转发到您的内部 Web 服务器。但是,除了一些其他例外情况外,这就是允许通过的全部端口。
要访问您的内部网络和资源,您需要一个虚拟专用网络(VPN)。VPN 是从互联网到内部网络的安全(加密)连接。VPN 可让内部网络之外的计算机“感觉”就像在内部网络一样。
一旦建立了 VPN 连接,批处理脚本就可以运行。您可以访问内部网络驱动器和打印机,并执行在办公室可以执行的任何操作。
Microsoft 为所有版本的 Windows Server 提供免费的 VPN 服务器,客户端内置于所有版本的 Windows 中。还有其他 VPN 解决方案,包括硬件和软件,既有免费的也有付费的。
与您的 Windows/网络管理员联系,可能已经安装了 VPN。
答案3
你的脚本应该可以工作,但你还需要检查 4 件事
DNS 正常工作吗?尝试通过 ping 在异地机器上进行验证。
尝试在异地客户端上禁用 WINS。
您是否转发了所有必需的端口?尝试将服务器放在 DMZ 主机上,看看是否可行。
如果公共 IP 没有改变,则简单地将其硬编码到您的 systems32\etc\hosts 中。