【发布时间】:2016-09-23 15:44:34
【问题描述】:
我正在使用它来映射 PowerShell v2 中的驱动器号,它的工作原理是驱动器号显示并在资源管理器中可用。
$Network = New-Object -ComObject "Wscript.Network"
$Network.MapNetworkDrive($drive.name, $drive.value, $true)
但是,如果我随后尝试使用该驱动器号在 Powershell 中执行任何操作,比如创建一个文件夹,我会收到 DriveNotFoundException。但正如我所说,驱动器在那里并且可以手动使用。我想我可能需要稍等片刻,或刷新资源管理器,或两者兼而有之,但这样做似乎不会影响任何事情。但是,如果我转身重新运行脚本,该脚本会提前检查驱动器是否存在,如果不存在则仅创建它,它将看到驱动器而不重新创建,并且以下任务将正常工作。好像驱动器号是基于会话的? 我也尝试添加
New-PSDrive -name:($drive.name -replace ':', '') -psProvider:FileSystem -root:$drive.value -scope:Global
同样,希望这将提供基于会话的驱动器,但没有好处。
另一个问题是脚本必须以管理员身份运行,但同样,如果我将其作为两个不同的脚本执行,一个用于创建驱动器,一个用于使用它,当两者都以管理员身份运行时,它可以工作。只有当两个任务都在一个脚本中完成时才会失败。
最后一点,我知道 PS 3 有更好的方法来处理映射驱动器,但由于我无法控制的事情,我仅限于 PS v2。
【问题讨论】:
-
可以有空格也可以有冒号,都可以,我发现冒号在视觉上连接了参数和值,这使代码对我来说更具可读性。编辑:询问冒号的评论是否被删除?
标签: powershell-2.0 mapped-drive