使用Powershell卸下USB外置驱动器


12

我正在尝试使用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进行不同的排列,但无济于事。切换参数时,dismount命令返回的退出代码会更改。

(0,0) = exit code 0

(0,1) = exit code 2

(1,0) = exit code 0

(1,1) = exit code 2

退出代码2的文档指出,存在现有的挂载点是无法卸载的原因。尽管我试图卸除存在的唯一挂载点,所以我不确定此退出代码要告诉我什么。

已经为遇到类似问题的人们拖网了,我只发现了一个额外的命令可以尝试,它是以下内容:

# executed after the .Dismount() command

$drive.Put() 

此附加命令无济于事。

我没办法尝试,因此任何人可以给我的帮助将不胜感激。


您可能不想卸下USB驱动器。您稍后必须在磁盘管理中重新分配驱动器号。
js2010年

Answers:


11

一个干净的解决方案不会像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


我以前发布的解决方案确实是正确的。关于我如何提供它,我有点不确定!请使用此方法。
pk。

1
请注意,可以在“运行”对话框powershell (New-Object -comObject Shell.Application).Namespace(17).ParseName(\"E:\").InvokeVerb(\"Eject\")
中将

单线工作,但没有反斜杠。
js2010年

不幸的是,这在这里不起作用。我也没有收到任何错误消息或任何错误消息。$?True在调用第二行之后。有什么我可以做的吗?
勒内Nyffenegger

1

我无法从PowerShell的结束做大量的工作应答,由你可能想看看如何mountvol运作。拆卸的程度不同。

Mountvol或Mountvol /?

显示名称,全局唯一标识符(GUID)和卷的位置。

Mountvol [驱动器:]路径VolumeName

创建一个新的卷安装点。指定驱动器号根目录或现有的空NTFS目录作为安装点的源,并指定卷名作为目标。

Mountvol [驱动器:]路径/ D

删除现有的卷安装点。

Mountvol [驱动器:]路径/ L

列出给定卷安装点的卷名称。

我尝试执行与VBScript中类似的操作,以对旧台式机上的设备进行重新排序,在旧台式机上,旧硬件的驱动器安装过于繁琐而无法删除(读取闪存驱动器),这干扰了自定义GUI上的快捷方式,在该GUI上我只能明确提及安装点( D:,E:,F :)有特定目的。这变得非常令人沮丧,您必须使用mountvol输入和输出来卸载和重新安装东西,以验证它运行良好并继续进行更改。我希望你比我好运。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.