function Eject-FlashDrive
{
    Write-Host "请选择要删除的U盘:"
    foreach ($device in (Get-WmiObject -Class Win32_LogicalDisk –filter "DriveType=2") | Out-GridView -PassThru )
    {
        $sa = new-object -com Shell.Application
        $sa.Namespace(17).items() | 
        ForEach {
            If ($_.Name -match $device.$DeviceID ) 
            {
                $_.InvokeVerb("Eject")
            }
           } 
        [System.Runtime.Interopservices.Marshal]::ReleaseComObject($sa) 
        Remove-Variable sa
    }    
}
本文链接: https://www.pstips.net/eject-u-drive.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
                                      请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

Shell.Application果然很强大,请教下如何学习它的一些细节功能。1.关于这种方法“$sa.Namespace(17)”请问你是怎么找到的。为什么这里是填17?2. [System.Runtime.Interopservices.Marshal]::ReleaseComObject($sa) 我猜是销毁释放内存,能否解释下这句话的作用?谢谢
更新至:http://www.pstips.net/call-shell-application.html
还是不虚此行的
为什么我的光驱会被弹出
文章中的脚本会将可弹出的设备列在表格中,由你自己决定弹出那个。你可能选择的就是光驱。
我看到弹出那个是一个表格,但是好像就只有一个设备就是我的U盘
但是我看见表格里只有一个设备,是我的U盘