用于映射驱动器的 Powershell 脚本,持久连接不起作用

Powershell script to map drives, persistent connection not working

下面的代码允许我在需要时映射适当的网络驱动器。

我遇到的问题是当我重新启动计算机时,映射的驱动器丢失了。所以我需要再次 运行 脚本。

$Net = New-Object -ComObject WScript.Network  
$Rename = New-Object -ComObject Shell.Application

#### # Map the network drives
$Net.MapNetworkDrive("A:", '\192.168.1.10\NAS1\Automate')
$Net.MapNetworkDrive("G:", '\10.0.0.1\NAS1\VidePro')  

timeout 4

#### # Rename everything
Write-Host "Naming all mapped driver correctly"
$rename.NameSpace("A:\").Self.Name = 'AutoMate 1Gbit' 
$rename.NameSpace("G:\").Self.Name = 'VidPro 10Gbit'

我已经尝试了以下代码片段,不幸的是它不起作用:

$Net.MapNetworkDrive("A:", '\192.168.1.10\NAS1\Automate' -Persist)
$Net.MapNetworkDrive("A:", '\192.168.1.10\NAS1\Automate' -Persistant)
$Net.MapNetworkDrive("A:", '\192.168.1.10\NAS1\Automate', -Persist)
$Net.MapNetworkDrive("A:", '\192.168.1.10\NAS1\Automate' '-Persist'

我不确定我在这里遗漏了什么。

作为旁注。上面的脚本中没有凭据,因为我通常先登录并登录凭据,然后 运行 脚本。只是代表我采取的额外安全措施。

谢谢。

这应该可以解决问题:

$NPSDArgs = @{Name       = "A" 
              PSProvider = "FileSystem"
              root       = "\192.168.1.10\NAS1\Automate" 
              Persist    = $True
             }

New-PSDrive @NPSDargs

要删除驱动器:

Remove-PSDrive -Name "A"

HTH

亚瑟,

循环执行的方法如下:

$MapTable = @{
  "A" = "\192.168.1.10\NAS1\Automate"
  "B" = "\192.168.1.11\NAS2\Automate"
  "H" = "\192.168.1.12\NAS3\Automate"
}

$MapTable.GetEnumerator() | ForEach-Object {

  $NPSDArgs = @{Name       = "$($_.Key)" 
                PSProvider = "FileSystem"
                root       = "$($_.Value)" 
                Persist    = $True
               }
  
  New-PSDrive @NPSDargs -WhatIf

} #End ForEach-Obj...

当您确定它可以满足您的要求时,删除 -WhatIf。

WhatIf 输出:

假设:对目标“名称:B 提供程序:Micro”执行“新驱动器”操作 soft.PowerShell.Core\FileSystem 根目录:\192.168.1.11\NAS2\Automate".

假设:在目标“名称:A 提供程序:Micro”上执行“新驱动器”操作 soft.PowerShell.Core\FileSystem 根目录:\192.168.1.10\NAS1\Automate".

假设:在目标上执行“新驱动器”操作“名称:H 提供商:Micro soft.PowerShell.Core\FileSystem 根目录:\192.168.1.12\NAS3\Automate”.

您会注意到输出的顺序与 MapTable 的顺序不同。这是 Hash tables 的一个“特性”。如果您希望以相同的顺序输出,请在 table 的定义上使用 [ordered] 装饰器,例如$MapTable = [有序]@{...}.

HTH