当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 在 PowerShell 中获取所有用户的映射驱动器 [4 种方法]

作者:精品下载站 日期:2024-12-14 05:31:23 浏览:14 分类:玩电脑

在 PowerShell 中获取所有用户的映射驱动器 [4 种方法]


[玩转系统] 在 PowerShell 中获取所有用户的映射驱动器 [4 种方法]

使用 net use 命令

使用 net use 命令为 PowerShell 中的所有用户获取映射驱动器。

使用 net use 命令:

net use

输出 :

New connections will be remembered.

Status   Local     Remote                          Network
------------------------------------------------------------------------------
OK       K:        \DESKTOP-NKK10JM\JavaProject   Microsoft Windows Network
OK       Z:        \DESKTOP-NKK10JM\Share         Microsoft Windows Network

The command completed successfully.

在上面的示例中,我们使用 net use 命令列出本地计算机上所有用户的所有映射驱动器。两个驱动器号(K:Z:)都映射到同一用户。

让我们将另一个驱动器映射到不同的用户,然后再次执行net use命令,看看最近映射的驱动器是否也显示出来。请参阅以下示例。

使用 net use 命令:

net use M: \DESKTOP-NKK10JM\AnotherFolder
net use

输出 :

New connections will be remembered.

Status  Local  Remote                           Network
------------------------------------------------------------------------------
OK      K:     \DESKTOP-NKK10JM\JavaProject    Microsoft Windows Network
OK      M:     \DESKTOP-NKK10JM\AnotherFolder  Microsoft Windows Network
OK      Z:     \DESKTOP-NKK10JM\Share          Microsoft Windows Network

The command completed successfully.

首先,我们指定要将网络驱动器映射到的驱动器号 (M:),后跟我们要共享的资源的 UNC 路径。请记住,我们可以使用任何字母来映射网络驱动器;如果尚未使用,则可以成功完成。如果文件共享包含空格,请不要忘记将其括在引号内,例如 \DESKTOP-NKK10J\"Another Folder"

如果您不想纠结将驱动器映射到哪个设备,可以使用星号来表示设备(此处,设备表示驱动器号 )。

使用 * 而不是驱动器盘符:

net use * \DESKTOP-NKK10JM\Share
net use

输出 :

Drive Y: is now connected to \DESKTOP-NKK10JM\Share.
The command completed successfully.
New connections will be remembered.

Status  Local   Remote                            Network
------------------------------------------------------------------------------
OK      K:      \DESKTOP-NKK10JM\JavaProject    Microsoft Windows Network
OK      M:      \DESKTOP-NKK10JM\AnotherFolder  Microsoft Windows Network
OK      Y:      \DESKTOP-NKK10JM\Share          Microsoft Windows Network
OK      Z:      \DESKTOP-NKK10JM\Share          Microsoft Windows Network

The command completed successfully.

使用 *,我们告诉 Windows 查找并映射下一个可用设备(驱动器号)。参见上面的输出;它还通知驱动器 Y: 已连接到 \DESKTOP-NKK10JM\Share

到目前为止,我们使用 net use 将映射驱动器作为登录用户进行身份验证。如果我们想通过备用凭据(即使用特定的用户名和密码)对共享资源进行身份验证怎么办?或者,如果我们要创建无设备连接(无驱动器号)怎么办? net use 命令能够检索这些驱动器吗?让我们在下面的例子中找到它。

使用 net use 命令:

net use \DESKTOP-NKK10JM\"Script Files" /u:Domain\Mehvish 12345
net use

输出 :

New connections will be remembered.

Status  Local   Remote                             Network
------------------------------------------------------------------------------
OK      K:      \DESKTOP-NKK10JM\JavaProject     Microsoft Windows Network
OK      M:      \DESKTOP-NKK10JM\AnotherFolder   Microsoft Windows Network
OK      Y:      \DESKTOP-NKK10JM\Share           Microsoft Windows Network
OK      Z:      \DESKTOP-NKK10JM\Share           Microsoft Windows Network
OK              \DESKTOP-NKK10JM\Script Files    Microsoft Windows Network

The command completed successfully.

在上面的示例中,我们使用 /u 参数指定用户名 (Mehvish) 和密码 (12345) 进行身份验证,并执行不提及驱动器号,但是net use命令也列出了这个映射的驱动器;因此,net use 可以检索所有用户的映射驱动器,无论这些用户是否无设备、是否经过身份验证。

我们不仅可以为所有用户创建或查看映射驱动器,还可以删除。执行net use /?命令查看可以与该命令一起使用的所有选项。

是否可以检索映射驱动器的某些属性?是的;下面继续和我们一起探索它们。

使用 Get-WmiObject/Get-CimInstace Cmdlet

使用 Get-WmiObject cmdlet 获取 PowerShell 中所有用户的所有映射驱动器的特定属性。如果您使用任何早于 3.0 的 PowerShell 版本,则首选此解决方案。

使用 Get-WmiObject Cmdlet:

Get-WmiObject -Class Win32_MappedLogicalDisk |
Select-Object Name, Compressed

输出 :

Name Compressed
---- ----------
K:        False
M:        False
Y:        False
Z:        False

Get-WmiObject cmdlet 用于获取 WMI(Windows 管理规范)类的实例或有关可用类的详细信息。我们将此 cmdlet 与 Win32_MappedLogicalDisk 类结合使用来检索其实例并访问与每个映射驱动器关联的所有属性。

这些属性包括 DeviceIDProviderNameSessionIDFileSystemName >压缩。我们使用 -Class 参数指定了 Win32_MappedLogicalDis 类,我们也可以省略该参数,但使用此参数使代码易于理解。

然后,我们将 Get-WmiObject cmdlet 的输出通过管道传输到 Select-Object cmdlet,该命令用于选择对象或指定的对象属性。我们使用 Select-Object cmdlet 来选择每个对象的 NameCompressed 属性。 Name 显示驱动器盘符,而 Compressed 显示布尔值(True:驱动器已压缩,False:驱动器没有被压缩)。

我们还可以使用 Get-WmiObject 的别名,将其替换为 gwmi

使用 Get-CimInstance cmdlet 获取 PowerShell 中所有用户的所有映射驱动器的特定属性。如果您使用的是 PowerShell 3.0 或更高版本,则可以继续使用此解决方案作为使用 Get-WmiObject cmdlet 的替代方案,因为 Get-WmiObject 已被 自 PowerShell 3.0 起,code>Get-CimInstance cmdlet。

使用 Get-CimInstance Cmdlet:

Get-CimInstance -Class Win32_MappedLogicalDisk |
Select-Object Name, Compressed

输出 :

Name Compressed
---- ----------
K:        False
M:        False
Y:        False
Z:        False

Get-CimInstance cmdlet 产生的结果与我们在前面的示例中获得的结果相同;此 cmdlet 从 CIM 服务器检索该类的 CIM(通用信息模型)实例。请记住,我们只能在 Windows 平台上使用 Get-CimInstance cmdlet。

Get-WmiObjectGet-CimInstance 生成的输出末尾有一个空行,因为这些 cmdlet 没有显示有关无设备连接的任何详细信息我们之前为名为 Mehvish 的用户创建了;请参阅使用 net use 命令中的最后一个示例。这些无设备连接在文件资源管理器中甚至不可见。

使用 Get-SmbMapping 命令

使用 Get-SmbMapping cmdlet 获取 PowerShell 中所有用户的所有映射驱动器的特定属性。

使用 Get-SmbMapping Cmdlet:

Get-SmbMapping |
Select-Object LocalPath, RemotePath, Status

输出 :

LocalPath RemotePath                            Status
--------- ----------                            ------
Z:        \DESKTOP-NKK10JM\Share                   OK
K:        \DESKTOP-NKK10JM\JavaProject             OK
M:        \DESKTOP-NKK10JM\AnotherFolder           OK
Y:        \DESKTOP-NKK10JM\Share                   OK
          \DESKTOP-NKK10JM\Script Files  Disconnected

Get-SmbMapping cmdlet 用于获取为服务器创建的服务器消息块 (SMB) 客户端目录映射。我们使用此 cmdlet 检索每个特定映射驱动器的 SMB 映射及其关联属性的列表。

然后,我们将 Get-SmbMapping cmdlet 的输出通过管道传输到 Select-Object cmdlet,以选择 LocalPathRemotePath所有映射驱动器的 和 Status 属性,包括无设备连接。

在上面的输出中,LocalPath 显示了本地路径,该路径用于映射此计算机上的远程路径(此计算机表示您运行命令的位置)。 RemotePath 显示从此计算机访问的路径。最后,Status 属性指示是否已连接。如果已连接,我们将看到 OK 状态;否则,已断开

默认情况下,映射的驱动器不是持久的;如果你愿意,你必须让它们持久;如何?使用 net use 命令将 /persistent 参数设置为 yes。设置 /persistent:yes 可确保即使在重新启动后也能保持连接。

另一个值得注意的点是 Windows 会记住上次创建的连接的持久设置。如果您将一个连接的 /persistent 设置为 yes,则所有后续连接都将保持持久状态,直到您将 /persistent 设置为 /persistent:no

想知道如何使所有先前创建的连接持久化?我们可以使用net use命令作为net use /persistent:yes来使所有连接在当前会话中持久化。

我们能否知道为所有用户映射驱动器的所有者?我们还可以获得共享名称吗?是的,请参阅以下示例。

使用 Get-SmbConnection Cmdlet:

Get-SmbConnection | 
Select-Object UserName, ShareName

输出 :

UserName                ShareName
--------                ---------
DESKTOP-NKK10JM\Mehvish AnotherFolder
DESKTOP-NKK10JM\Mehvish JavaProject
DESKTOP-NKK10JM\Mehvish Share

Get-SmbConnection cmdlet 建立了从 SMB 客户端到 SMB 服务器的连接。我们使用此 cmdlet 来获取所有者的 UserNameShareName。请记住,Share 连接了两次,驱动器号为 Z:Y:,但在上面的示例中只会列出一次。您可以在此处找到有关此 cmdlet 的更多信息。

使用 Get-PSDrive Cmdlet

使用 Get-PSDrive cmdlet 为 PowerShell 中的所有用户获取映射驱动器。

使用 Get-PSDrive Cmdlet:

Get-PSDrive  -PSProvider FileSystem

输出 :

Name  Used (GB)  Free (GB) Provider      Root   CurrentLocation
----  ---------  --------- --------      ----   ---------------
C     35.34      82.59     FileSystem    C:\     Users\Mehvish
D     19.92      468.36    FileSystem    D:\
E     3.82       439.41    FileSystem    E:\
K     3.82       439.41    FileSystem    \DESKTOP-NKK10JM\JavaProject
M     3.82       439.41    FileSystem    \DESKTOP-NKK10JM\AnotherFolder
Y     3.82       439.41    FileSystem    \DESKTOP-NKK10JM\Share
Z     3.82       439.41    FileSystem    \DESKTOP-NKK10JM\Share

在这里,我们使用 Get-PSDrive 获取当前会话中由 FileSystem 提供的所有驱动器,我们使用 -PSProvider 参数指定该驱动器。如果我们不指定此参数,则 Get-PSDrive 将检索 Windows 逻辑驱动器、会话指定的临时驱动器、PowerShell 公开的驱动器以及持久映射的网络驱动器。

立即了解临时驱动器和持久驱动器之间的区别。

让我们看下面的例子来清楚地理解我们在上一段中所说的内容。

使用 Get-PSDrive Cmdlet:

Get-PSDrive 

输出 :

Name   Used (GB)   Free (GB)   Provider    Root      CurrentLocation
----   ---------   ---------   --------    ----      ---------------
Alias                          Alias
C      35.38       82.56       FileSystem  C:\        Users\Mehvish
Cert                           Certificate \
D      19.92       468.36      FileSystem  D:\
E      3.82        439.41      FileSystem  E:\
Env                            Environment
Function                       Function
HKCU                           Registry    HKEY_CURRENT_USER
HKLM                           Registry    HKEY_LOCAL_MACHINE
K      3.82        439.41      FileSystem  \DESKTOP-NKK10JM\JavaProject
M      3.82        439.41      FileSystem  \DESKTOP-NKK10JM\AnotherFolder
Variable                       Variable
WSMan                          WSMan
Y      3.82        439.41      FileSystem   \DESKTOP-NKK10JM\Share
Z      3.82        439.41      FileSystem   \DESKTOP-NKK10JM\Share

我们探索了不同的解决方案;您可以根据您的项目需求进行选择。

这就是如何在 PowerShell 中为所有用户获取映射驱动器。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯