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



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

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

$Net = New-Object -ComObject WScript.Network  
$Rename = New-Object -ComObject Shell.Application
#### # Map the network drives
$Net.MapNetworkDrive("A:", '\192.168.1.10NAS1Automate')
$Net.MapNetworkDrive("G:", '\10.0.0.1NAS1VidePro')  
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.10NAS1Automate' -Persist)
$Net.MapNetworkDrive("A:", '\192.168.1.10NAS1Automate' -Persistant)
$Net.MapNetworkDrive("A:", '\192.168.1.10NAS1Automate', -Persist)
$Net.MapNetworkDrive("A:", '\192.168.1.10NAS1Automate' '-Persist'

我不确定我在这里错过了什么。

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

谢谢。

这应该可以解决问题:

$NPSDArgs = @{Name       = "A" 
PSProvider = "FileSystem"
root       = "\192.168.1.10NAS1Automate" 
Persist    = $True
}
New-PSDrive @NPSDargs

要卸下驱动器:

Remove-PSDrive -Name "A"

呵呵

Arthor,

以下是循环操作的方法:

$MapTable = @{
"A" = "\192.168.1.10NAS1Automate"
"B" = "\192.168.1.11NAS2Automate"
"H" = "\192.168.1.12NAS3Automate"
}
$MapTable.GetEnumerator() | ForEach-Object {
$NPSDArgs = @{Name       = "$($_.Key)" 
PSProvider = "FileSystem"
root       = "$($_.Value)" 
Persist    = $True
}

New-PSDrive @NPSDargs -WhatIf
} #End ForEach-Obj...

删除 -WhatIf 当你确定它做你想要的时。

WhatIf 输出:

如果:在目标"名称:B "上执行"新驱动器"操作 提供程序:微型 软。PowerShell.Core\FileSystem Root: \192.168.1.11\NAS2\Automate".

如果:在目标"名称:提供程序:微型"上执行"新驱动器"操作 软。PowerShell.Core\FileSystem Root: \192.168.1.10\NAS1\Automate".

如果:在目标"名称:H"上执行"新驱动器"操作 提供程序:微型 软。PowerShell.Core\FileSystem Root: \192.168.1.12\NAS3\Automate".

您会注意到,输出与 MapTable 的顺序不同。这是哈希表的一个"功能"。如果您希望输出的顺序相同,请在表的定义中使用 [ordered] 装饰器,例如 $MapTable = [ordered]@{...}。

呵呵

相关内容

  • 没有找到相关文章

最新更新