即使存在驱动器,powershell test-path也会返回false

时间:2014-02-14 06:54:54

标签: flash powershell

我正在编写一个脚本来自动备份文件到USB闪存。并非所有记忆棒都具有相同的驱动器ID。该脚本搜索驱动器E:,F:,G:和H:的路径,并报告如果未连接闪存驱动器则无法找到驱动器。如果随后连接了闪存驱动器,则测试仍会返回False。

试试这个。在Powershell控制台中插入USB记忆棒(已知为驱动器E:),测试E:的路径。它返回True。现在移除记忆棒并测试驱动器E:的路径,并按预期返回False。现在将USB记忆棒重新插入并重复测试路径E:cmdlet并返回False。为什么呢?

1 个答案:

答案 0 :(得分:0)

对我来说,它有效,

Test-Path d:\

返回True,只需要一些时间。

您可以使用此功能在出现音量时接收事件:

$query = "SELECT * FROM Win32_VolumeChangeEvent"
Register-WMIEvent -Query $query -Action {$global:a=$Args[0];$global:b=$Args[1];$global:c=$event;write-host "done"}
# Now plug your stick
# Then have a look to :
$b.NewEvent
__GENUS             : 2
__CLASS             : Win32_VolumeChangeEvent
__SUPERCLASS        : Win32_DeviceChangeEvent
__DYNASTY           : __SystemClass
__RELPATH           : 
__PROPERTY_COUNT    : 4
__DERIVATION        : {Win32_DeviceChangeEvent, __ExtrinsicEvent, __Event, __IndicationRelated...}
__SERVER            : 
__NAMESPACE         : 
__PATH              : 
DriveName           : D:
EventType           : 2
SECURITY_DESCRIPTOR : 
TIME_CREATED        : 130368370362465996
PSComputerName      : 

# Now unplug your stick
# Then have a look to :
$b.NewEvent
__GENUS             : 2
__CLASS             : Win32_VolumeChangeEvent
__SUPERCLASS        : Win32_DeviceChangeEvent
__DYNASTY           : __SystemClass
__RELPATH           : 
__PROPERTY_COUNT    : 4
__DERIVATION        : {Win32_DeviceChangeEvent, __ExtrinsicEvent, __Event, __IndicationRelated...}
__SERVER            : 
__NAMESPACE         : 
__PATH              : 
DriveName           : D:
EventType           : 3
SECURITY_DESCRIPTOR : 
TIME_CREATED        : 130368373636563263
PSComputerName      :