我试图通过弹出eSATA硬盘驱动器“USB托盘图标的Windows”安全删除,但这是不可能的,因为“另一个程序使用的驱动器”错误(我已经厌倦了这个stup@# Windows错误)。
我在PowerShell上尝试了以下代码:
$vol = get-wmiobject -Class Win32_Volume | where{$_.Name -eq 'F:\'}
$vol.DriveLetter = $null
$vol.Put()
$vol.Dismount($false, $false)
还有这个:
$Eject = New-Object -comObject Shell.Application
$Eject.NameSpace(17).ParseName($usbDrvLetter+“:”).InvokeVerb(“Eject”)
什么都没发生。
有什么方法可以让它工作吗?
1条答案
按热度按时间tez616oj1#
不确定,但
.Dismount()
方法的重载定义如下:所以也许可以改为:
$Vol.Dismount($true, $true)
有效地强制下马。我已经试过测试这个,除了一般情况下我认为你应该使用CIMcmdlet而不是 -WMI。
Get-WMIObject
在Windows PowerShell中已弃用,并已从PowerShell Core中删除。考虑Dismount方法的潜在返回代码(这里有文档)也很重要。
要获取卷示例,请执行以下操作:
这显然与旧方法非常相似。但是,调用方法的方式略有不同:
而且,它似乎没有卸载驱动器。但是,如果我改变参数:
当资源管理器转移焦点时,这看起来确实是卸载了驱动器。但是,驱动器仍然可见,单击时可以访问。我从来没有看到安全弹出消息。卸载驱动器似乎并不等同于安全弹出它。