我需要在预定时间替换映射网络驱动器的路径。我该怎么做?

问题描述 投票:0回答:1

我需要同时为少数用户更换映射网络驱动器。

由于迁移到新服务器,我需要进行切换。

旧:

\\server1\path
新:
\\server2\path

驱动器号和其他任何内容将保持不变。

我需要在本周五的某个特定时间或前后进行此操作。有什么建议依赖于用户存储的凭据而不是我知道他们的密码吗?

我想使用组策略,但这不能保证时间准确。我不能让用户在新服务器启动之前使用它,也不能让用户在旧服务器关闭后使用它。

计划任务可以工作,然后通过组策略推送它会很棒,但是如何在他们的配置文件上替换每个用户的映射驱动器,而不需要他们的登录信息。

这应该有效: New-PSDrive -Name $Name -PSProvider FileSystem -Root $NetworkPath -Description $Description -Persist

但我需要以用户身份运行它,或者至少根据用户的配置文件运行它,但我不想使用他们的密码来完成此操作。

管理员必须有办法做到这一点。

编辑: 我创建了一个 GP 以使用旧服务器添加驱动器,并添加了第二个 GP 以使用新服务器添加驱动器并将其禁用。我是测试组中唯一的一个人。我还调整了默认域策略以立即刷新策略。当我强制执行政策时,我就会让它发挥作用。但当我强制实施政策时。这看起来太慢了。

powershell active-directory group-policy
1个回答
0
投票

严格来说不是一个代码问题,不,但我建议如下:

  • 通过用户 GPO 创建的新计划任务。默认情况下,它将填写运行计划任务的帐户的
    %LogonDomain%\%LogonUser%
    Run only when user is logged on
    ,因此它执行的任何操作都将在用户上下文下运行。
  • 任务触发器应为
    At logon
    Members of specified group
    (提前将用户添加到组中)。将
    Activate
    Expire
    参数设置为适当的日期。
    Expire
    应设置为足够长的间隔,以便您的目标用户登录 - 几天/一周/无论什么。您可以永远保留它,但毫无疑问,您最终希望清理这种 GPO。
  • 或者,如果您不希望任务在活动间隔期间下次登录时发生,您可以将触发器设置为在特定日期时间运行一次,但请注意,它们需要登录才能执行。在这种情况下,最好启用该设置
    Run task as soon as possible if a scheduled start is missed
  • 然后任务操作应该是运行重新映射脚本,其中应该包含适当的检查,以检查登录用户的驱动器是否仍然需要重新映射(因为脚本可能已经运行过一次),显然使用适当的环境变量如果需要的话,捕获用户名等。由于它已经在用户上下文下运行,因此您不需要显式提供用户名/密码来映射驱动器(假设它是 SMB 共享并且是访问它的登录用户凭据)
  • 重新映射脚本应位于 DC 上的 Netlogon 共享中的某个位置,以便所有需要它的人都可以访问。

这一切都超出了我的想象,所以细节可能是有趣的部分,但希望大纲有所帮助。本质上,你走在正确的轨道上。

© www.soinside.com 2019 - 2024. All rights reserved.