JB.*_*JB. 12 scripting windows powershell hard-drive usb
我正在尝试使用 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)
Run Code Online (Sandbox Code Playgroud)
然后我检查我的计算机以检查驱动器是否已卸载,但事实并非如此。
布尔参数 $force 和 $permanent 已尝试使用不同的排列,但无济于事。当参数被切换时,卸载命令返回的退出代码会发生变化。
(0,0) = exit code 0
(0,1) = exit code 2
(1,0) = exit code 0
(1,1) = exit code 2
Run Code Online (Sandbox Code Playgroud)
退出代码 2 的文档表明存在安装点是它无法卸载的原因。虽然我试图卸载存在的唯一挂载点,但我不确定这个退出代码试图告诉我什么。
已经在网上搜索遇到类似问题的人后,我只找到了一个额外的命令可以尝试,如下所示:
# executed after the .Dismount() command
$drive.Put()
Run Code Online (Sandbox Code Playgroud)
这个额外的命令没有帮助。
我没有什么可以尝试的了,所以任何人都可以给我任何帮助将不胜感激。
小智 13
一个干净的解决方案,不会像 pk 的样本那样留下任何半烘焙的开放引用:
$driveEject = New-Object -comObject Shell.Application
$driveEject.Namespace(17).ParseName("E:").InvokeVerb("Eject")
Run Code Online (Sandbox Code Playgroud)
取自http://sushihangover.blogspot.nl/2012/02/powershell-eject-local-or-remote.html
我无法从 PowerShell 端很好地回答,您可能想看看如何mountvol操作。有不同程度的下马。
蒙特沃尔还是蒙特沃尔/?
显示卷的名称、全局唯一标识符 (GUID) 和位置。
Mountvol [驱动器:]路径 卷名称
创建新的卷安装点。指定驱动器号根目录或现有的空 NTFS 目录作为装载点的源,并将卷名称指定为目标。
Mountvol [驱动器:]路径 /D
删除现有卷安装点。
Mountvol [驱动器:]路径 /L
列出给定卷安装点的卷名称。
我尝试做一些类似于 VBScript 中所需的操作,以在旧桌面上重新排序设备,其中旧硬件的驱动器安装太繁琐而无法删除(读取闪存驱动器),这会干扰自定义 GUI 上的快捷方式,我只能明确提及安装点( D:、E:、F:) 具有特定目的。这变得非常令人沮丧,你必须使用 mountvol 输入和输出来卸载和重新安装东西,以验证它是否顺利并继续进行更改。我希望你的运气比我好。
| 归档时间: |
|
| 查看次数: |
34203 次 |
| 最近记录: |