在 Active Directory 中,您可以将 IP 地址映射到客户端站点。
...然后您可以将组策略对象映射到站点。
这一切都很棒,但是我有一个正在快速发展的客户,他们预计在未来一两年内将拥有数百个站点。
我们的命名标准大致基于 LOCODE,因此每个站点都是 7 个字符——例如“USHQZOF”。该前缀用于命名每台机器。
我已经厌倦了制定同样的基本政策到处。
它实际上遵循以下格式:
- 将驱动器 O 映射到 \\USHQZOFSRV01\officeshare
- 将主打印机映射到 \\USHQZOFSRV01\copier
如果我能制定一项政策,我会非常高兴地说:
- 将驱动器 O 映射到 \\(site-name-from-ad)SRV01\officeshare
- 将主打印机映射到 \\(site-name-from-ad)SRV01\copier
...并彻底解决此事。
看来您可以在组策略首选项中使用大量环境变量(https://technet.microsoft.com/en-us/library/Cc753915.aspx),但我没有看到任何有关客户站点名称的信息。
是我运气不好吗,还是我需要采用“老办法”,在登录期间调用 cscript/vbscript 文件来查找并映射相应的项目?
(编辑:我知道可以用 VBS 文件来完成——我以前做过。但它看起来……不干净……)
答案1
这是我第一次尝试帮助
我也遇到了这个问题,我使用 DNS 默认行为优先考虑本地子网来解决它 https://technet.microsoft.com/en-us/library/cc787373(v=ws.10).aspx
因此,对于您来说,只需要为您的网站 fs 服务器创建一个名为 SRV01 的 A 记录
然后只需创建一个 gpo 来挂载并使用 srv01\ 添加默认打印并将其链接到每个站点
当站点中的客户端请求 srv01 时,dns 将返回该站点的 srv01 的正确 ip 地址
答案2
如果您仍然对 VBS 感到好奇,此代码将把站点名称设置为系统变量。
'--- Get Site name ---
Set strSysinfo = CreateObject("ADSystemInfo")
strCurrentSite=strSysinfo.Sitename
'--- Write site name to system variables ---
Set objShell = CreateObject("WScript.Shell")
Set objSystemEnv = objShell.Environment("SYSTEM")
objSystemEnv("SiteName") = strCurrentSite
'--- Clean ---
Set strSysinfo = Nothing
Set objShell = Nothing
Set objSystemEnv = Nothing