Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 能够在全机器范围内替代驱动装置_Windows_Powershell_Ansible_Subst - Fatal编程技术网

Windows 能够在全机器范围内替代驱动装置

Windows 能够在全机器范围内替代驱动装置,windows,powershell,ansible,subst,Windows,Powershell,Ansible,Subst,我已将Ansible设置为使用WinRM证书方法连接到Windows服务器2019。我需要将D驱动器映射到镜像C。使用SUBST我可以执行SUBST D:C:\但是 当我使用win\u shellRemote Desktop运行Ansible命令时,不会显示驱动器 反之亦然:当我在远程桌面上运行命令时,Ansible的shell没有看到新的D驱动器 我尝试使用使映射持久化,重新启动后,我可以在带有远程桌面的文件资源管理器中看到驱动器,但PowerShell和Ansible的win_shell都

我已将Ansible设置为使用WinRM证书方法连接到Windows服务器2019。我需要将D驱动器映射到镜像C。使用SUBST我可以执行
SUBST D:C:\
但是

  • 当我使用
    win\u shell
    Remote Desktop运行Ansible命令时,不会显示驱动器
  • 反之亦然:当我在远程桌面上运行命令时,Ansible的shell没有看到新的D驱动器
  • 我尝试使用使映射持久化,重新启动后,我可以在带有远程桌面的文件资源管理器中看到驱动器,但PowerShell和Ansible的win_shell都看不到它

如何使用Ansible playbook在机器范围内将C映射到D?

我不知道您为什么要这样做,但您可以尝试使用工作站服务:

Net use d: \\localhost\c$

您可能会遇到的一个问题是,该命令必须由使用它的同一用户运行,例如,如果您在提升的管理员shell中运行它,您将无法在简单的用户shell中看到它。

我不知道您为什么要这样做,但您可以尝试使用工作站服务:

Net use d: \\localhost\c$

您可能遇到的一个问题是,该命令必须由使用该命令的同一用户运行,例如,如果您在提升的管理员外壳中运行该命令,您将无法在简单的用户外壳中看到它。

驱动器的注册表值缺少前缀
\??\
。使用正确的注册表值,一切都正常工作。作为记录,这是我最后完成的一项任务:

    - name: Map D drive to C.
      ansible.windows.win_regedit:
        path: HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices
        name: "D:"
        state: present
        type: string
        data: '\??\C:'

驱动器的注册表值缺少前缀
\??\
。使用正确的注册表值,一切都正常工作。作为记录,这是我最后完成的一项任务:

    - name: Map D drive to C.
      ansible.windows.win_regedit:
        path: HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices
        name: "D:"
        state: present
        type: string
        data: '\??\C:'

在“HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\DOS设备”中定义“D:”驱动器链接时,您的目标是卷设备“\??\C:”还是根目录“\??\C:\”?它应该是最大兼容性的音量设备;subst.exe不能这样做。为了增加度量值,我还将其设置为显式全局设备路径,例如“\global???\C:”。但是,请记住,这不是在装入点管理器中注册的规范驱动器,因此诸如
GetFinalPathNameByHandleW
之类的API函数仍将解析为“C:”驱动器。@ErykSun I缺少“\??”前缀。感谢您的宝贵意见。当您在“HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\DOS设备”中定义“D:”驱动器链接时,您的目标是卷设备“\??\C:”还是根目录“\??\C:\”?它应该是最大兼容性的音量设备;subst.exe不能这样做。为了增加度量值,我还将其设置为显式全局设备路径,例如“\global???\C:”。但是,请记住,这不是在装入点管理器中注册的规范驱动器,因此诸如
GetFinalPathNameByHandleW
之类的API函数仍将解析为“C:”驱动器。@ErykSun I缺少“\??”前缀。谢谢你的评论。谢谢。这并不能完全满足我正在使用的遗留系统的需要,但它可能对访问此页面的人很有用。谢谢。这并不能完全满足我正在使用的旧系统的需要,但它可能对访问此页面的用户非常有用。要获得最佳结果,请使用“\??\C:”或“\Global???\C:”而不是根目录“\??\C:\”。如果驱动器实际上是一个目录而不是一个设备,则某些API函数会出现错误,例如
GetVolumePathNameW
对于subst.exe驱动器来说,由于它们以目录为目标,因此表现不好。为了获得最佳结果,目标“\??\C:”或“\Global???\C:”,而不是根目录“\??\C:\”。如果驱动器实际上是一个目录而不是一个设备,则某些API函数会出现错误,例如
GetVolumePathNameW
对于subst.exe驱动器,由于它们的目标是一个目录,因此表现很差。