gpt4 book ai didi

azure - New-PSDrive 对其他 shell 不可见,与 MS 文档相反

转载 作者:行者123 更新时间:2023-12-02 08:16:54 26 4
gpt4 key购买 nike

我一直在尝试以下各种方法,尝试以对其他 shell 和文件资源管理器中两者可见的方式挂载网络共享嗯>。根据相关命令的 MS 文档,说可以使用 -Persistent-Scope Global 使它们“立即对其他 shell 可见”,但事实并非如此工作。

$mDL       = 'Z'        # Mount to this Drive Letter
$dDesc = 'ML-DATA' # Description of PSDrive
$NLRoot = "\\somepath.windows.net\xxx"
$UserName = "localhost\someuser"

$cred = Get-Credential -Credential $UserName

New-PSDrive -Name $mDL -PSProvider "FileSystem" -Root $NLRoot -Credential $cred -Description $dDesc -Persist -Scope Global

数据容器位于 Azure 中,除了从我的系统 (Win10) 中的其他部分可见之外,一切似乎都可以正常工作。

如何使该驱动器从其他 PowerShell 实例和文件资源管理器中可见?

<小时/>

更新:2022-07-06

我的错,该文本来自 New-SmbMappingss64 文档,其中指出:

When a drive mapping is created with New-SmbMapping the new drive will not be visible to any currently running processes (including Windows Explorer) until that process is restarted (or the machine is rebooted). The one exception to this is the PowerShell console, all PowerShell sessions on the machine will immediately get the new drive mappings.

也可能是非专业人士不容易理解 MS 文档,因为在 New-PSDrive 中文档中,以下内容在 2 个地方进行了说明。

  • 示例 4 中:
    可以在本地计算机上的 PowerShell session 、文件资源管理器以及使用 net use 等工具查看映射的驱动器。

  • -Persist 下的 Paramters 列表中:
    映射的网络驱动器保存在本地计算机上的 Windows 中。它们是持久的,不特定于 session ,并且可以在文件资源管理器和其他工具中查看和管理。

<小时/>

那么我怎样才能使这个共享用户 session 类型不可知,使得Z:在“任何地方”都可见并且对于文件资源管理器和他们想要使用的任何 powershell/cmd 中的“每个人”?

<小时/>

有用的引用:

最佳答案

我不确定 Azure 特定的注意事项是否适用,但是,一般来说:

tl;博士

“对所有其他 shell 立即可见”对于新建立的持久驱动器映射适用于:

  • 默认情况:Shell 进程(例如 PowerShell 和 cmd.exe session ) - 更一般地说,( native )进程通常 - 创建的:

    • 同一用户
    • 具有相同的 session 类型:常规(非提升)与提升(以管理员身份运行) )。
  • 如果您的系统已进行相应配置(见下文):创建的进程:

    • 同一用户
    • 与 session 类型无关

注意:此答案中的所有信息也适用于非持久映射驱动器,假设它们是使用系统级功能建立的,例如net.exe 使用 或文件资源管理器。 PowerShell 不允许您创建此类映射:如果您在 New-PSDrive 调用中省略 -Persist,您将获取一个(始终是非持久的、特定于 session 且可能特定于范围的)仅限 PowerShell 驱动器。

<小时/>

持久映射的网络驱动器特定于用户:

  • 正如预期其他用户将看不到给定用户的持久映射驱动器。

  • 令人惊讶即使在同一用户的上下文中,也尝试从提升的 session 建立持久驱动器>(以管理员身份运行)不起作用:使映射持久的请求被悄悄地忽略(也就是说,映射只是悄悄地为当前 session 建立,并且仅对同一用户的其他提升 session 可见)。

  • 默认情况下,提升 session 与非提升 session 共享驱动器映射,因此最初不存在驱动器映射在高级 session 中。

<小时/>

顺便说一句:

您的New-PSDrive命令显示了两者-Persist-Scope Global的使用,这确实是成功所必需的从脚本建立持久驱动器(从全局范围以外的范围,即不是直接从交互式提示符)。

如果您-Persist单独使用,它会静静地被忽略:即非持久,已建立仅限范围本地 PowerShell 的驱动器。

鉴于建立持久性驱动器映射与 PowerShell 的范围无关,并且成功建立的持久性驱动器(或使用 net use 或文件资源管理器建立的非持久性驱动器)根据定义是可见的在所有 PowerShell 作用域中,应该不需要还需要指定-Scope Global - 不幸的是,我们决定不解决此可用性问题:请参阅 GitHub issue #15752 .

关于azure - New-PSDrive 对其他 shell 不可见,与 MS 文档相反,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72818119/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com