powershell - 弹出通过usb连接的设备的powershell命令第一次不起作用
问题描述
我有一个 java 应用程序,它与通过 USB 驱动器连接的设备进行交互。我想在处理后弹出设备。下面的命令有效,但我必须循环尝试以确保它被弹出。
powershell.exe ((New-Object -comObject Shell.Application).NameSpace(17).ParseName('E:\').InvokeVerb('Eject'))
不确定命令是否有任何问题。有时它会在 3 或 4 次后起作用。
任何人都可以帮忙吗?
在此处添加屏幕截图:在此处 输入图像描述
解决方案
我无法重现该错误,但在调用 Eject 动词时,驱动器对象的类型似乎从“USB 驱动器”更改为“可移动驱动器”。
您可能想在例程中添加一个简短的脚本。就像是:
$obj = (New-Object -comObject Shell.Application).namespace(17).ParseName('E:\')
$Type = $obj.Type
while ($Type-eq 'USB Drive'){
$obj.InvokeVerb('Eject')
$Type= $obj.Type
}
然后,您不必多次运行代码并等待 PowerShell 启动。
这是一个单行:
powershell.exe -Command {$obj = (New-Object -comObject Shell.Application).namespace(17).ParseName('E:\');$Type = $obj.Type;while ($Type-eq 'USB Drive'){Write-Host 'Removing drive';$obj.InvokeVerb('Eject');$Type= $obj.Type}}
如果要在 cmd 而不是 PowerShell 中运行命令,则需要将其格式化如下:
powershell.exe -Command $obj = (New-Object -comObject Shell.Application).namespace(17).ParseName('E:\');$Type = $obj.Type;while ($Type-eq 'USB Drive'){Write-Host 'Removing drive';$obj.InvokeVerb('Eject');$Type= $obj.Type}
推荐阅读
- python - ImportError:无法在 pycharm 中导入名称“随机”
- html - 如何创建响应式按钮?
- vue.js - 如何在 WordPress 插件中使用 parcel.js 和 vue-loader 获取图像文件
- java - 在java中绘制像素图像
- reactjs - 停止点击事件在弹出框目标上传播
- javascript - 这在 JavaScript 中是什么意思: var controller = controller || {};
- css - css 打印媒体布局,带有标题和从上到下流动的两列布局
- c# - 如何使我的机器人列表服务器位于其中?
- c++ - 初始化列表初始化的类 std::array 成员变量
- arrays - Swift 是否有任何简单的方法来获取二维数组中的列?