下面的代码允许我在需要时映射相应的网络驱动器。
我遇到的问题是当我重新启动计算机时,映射的驱动器丢失了。所以我需要再次运行脚本。
$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]@{...}。
呵呵