我正在使用它在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。
可以有空格或冒号,无论是工作,我发现冒号直观地连接参数和值,这使得代码对我来说更具可读性。 编辑:有关冒号的评论被删除了吗? – Gordon