将共享映射到powershell中未分配的驱动器号

Sam*_*abu 3 powershell powershell-2.0

我使用PowerShell映射我的网络驱动器,如下所示.

$net = new-object -ComObject WScript.Network
$net.MapNetworkDrive("r:", "$Folder","FALSE","Domain\UserName", "Password")
Run Code Online (Sandbox Code Playgroud)

但是我在这里发送驱动器号码r:.如果r:已经使用了驱动器,则会失败.

有没有办法将驱动器映射到未分配的驱动器号.(例如,如果R:已分配,但S:不是,则应自动映射到S:驱动器)

And*_*ndi 5

首先,您需要获取下一个可用的驱动器号.以下是PowerShell.com存档的示例:

function Get-NextFreeDrive {
  68..90 | ForEach-Object { "$([char]$_):" } | 
  Where-Object { 'h:', 'k:', 'z:' -notcontains $_  } | 
  Where-Object { 
    (new-object System.IO.DriveInfo $_).DriveType -eq 'noRootdirectory' 
  }
}
Run Code Online (Sandbox Code Playgroud)

来自PowerShell.com:

它首先枚举字母D:到Z:的ASCII代码.然后,管道将这些ASCII代码转换为驱动器号.接下来,查看管道如何使用排除列表以及不希望用于映射的驱动器(可选).在此示例中,从不使用驱动器号h:,k:和z :. 最后,管道使用.NET DriveInfo对象来检查驱动器是否正在使用中.

$net = new-object -ComObject WScript.Network
$net.MapNetworkDrive((Get-NextFreeDrive)[0], "$Folder","FALSE","Domain\UserName", "Password")
Run Code Online (Sandbox Code Playgroud)