我试图使用powershell卸下外部USB驱动器,我不能成功地做到这一点。 以下脚本是我使用的:
#get the Win32Volume object representing the volume I wish to eject $drive = Get-WmiObject Win32_Volume -filter "DriveLetter = 'F:'" #call dismount on that object there by ejecting drive $drive.Dismount($Force , $Permanent)
然后检查我的电脑,检查驱动器是否卸下,但不是。
布尔参数$ force和$ permanent已经被尝试了不同的排列,没有用。 当params被切换时,由dismount命令返回的退出代码会改变。
(0,0) = exit code 0 (0,1) = exit code 2 (1,0) = exit code 0 (1,1) = exit code 2
退出代码2的文档表明,现有的挂载点是无法卸载的原因。 虽然我正在试图解决存在的唯一挂载点,所以我不确定这个退出代码试图告诉我什么。
为了解决遇到过类似问题的人,我已经find了一个额外的命令,那就是:
# executed after the .Dismount() command $drive.Put()
这个额外的命令没有帮助。
我正在耗尽的东西尝试,所以任何人可以给我的援助将不胜感激。
一个干净的解决scheme,不会留下任何半开放的引用,如来自PK的样本是:
$driveEject = New-Object -comObject Shell.Application $driveEject.Namespace(17).ParseName("E:").InvokeVerb("Eject")
取自http://sushihangover.blogspot.nl/2012/02/powershell-eject-local-or-remote.html
我无法从PowerShell回答很好,因为您可能想了解一下mountvol如何运行 。 有不同程度的下马。
Mountvol或Mountvol /?
显示名称,全局唯一标识符(GUID)和卷的位置。
Mountvol [drive:]pathVolumeName
创build一个新的卷装入点。 指定驱动器号根目录或现有的空NTFS目录作为安装点的源和卷名作为目标。
Mountvol [drive:] path / D
删除现有的卷装入点。
Mountvol [drive:] path / L
列出给定卷装入点的卷名称。
我尝试了一些类似于VBScript中所要求的方式来对旧桌面上的设备进行重新sorting,在这些旧桌面上,驱动器装载的太旧的硬件太繁琐而无法移除(读取闪存驱动器)干扰了自定义GUI上的快捷方式,我只能明确提到挂载点D :, E :, F :)有特定用途。 这变得非常令人沮丧,你必须使用mountvolinput和输出卸载和重新装入东西,以validation它进行得很顺利,并继续进行更改。 我希望你比我好运。