2015-11-24 7 views
0

Я на самом деле пишу скрипт узла, который обнаруживает, что какой-то USB-порт подключен, а затем копирует его на рабочий стол. Это для ОС Windows. Для этого я вручную проверяю, существует ли путь «E:», «F: \» и т. Д.Как получить имя USB-устройства, которое уже установлено?

Но я должен быть уверен, что устройства - это те, которые мне нужны. Они получили конкретные имена, например:

MTR12345 или MTR23RR5 или MTRTGX23.

И мне нужно знать имена тезисов. Я искал различные решения nodejs и powershell, но ни один из них не соответствовал моим потребностям.

Мне нужно получить имя устройства, установленного на E: \. Я совершенно не знаком с PowerShell и NodeJS.

Как это сделать? Спасибо за вашу помощь.

+0

'Get-WmiObject Win32_logicaldisk' получит то, что я думаю. Вам нужно будет отфильтровать имя тома из его звуков. 'Get-WmiObject Win32_logicaldisk | Где-Объект {«MTR12345», «MTR23RR5», «MTRTGX23» - содержит $ _. VolumeName} | Выберите «Expand DeviceID»? Есть ли что-то, что вы пытались или что-то вы застряли? – Matt

+0

Я пробовал много фреймворков usb, которые не соответствуют моим потребностям и командам powershell. Спасибо за ответ, ваши команды говорят мне, где подключен MTR, даже если мне нужна противоположность (я знаю точку монтирования, но мне нужно имя устройства). Для использования вашей команды мне нужно знать точное имя моего MTR , но он меняется каждый раз). Я пробовал вашу команду с помощью RegExp, но, похоже, она не работает. Я попробовал: 'Get-WmiObject Win32_logicaldisk | Where-Object {"MTR [A-Za-z0-9] +" -поддерживает $ _. VolumeName} | Выберите «Expand DeviceID» – Addict

+1

Но является ли volumename тем, что вы на самом деле ищете? Если вам нужно использовать регулярное выражение, то ваша статья будет таковой. 'Where-Object {$ _. VolumeName -match" MTR [A-Za-z0-9] + "}'. Вы никогда явно не говорили, что вам нужно частичное или регулярное выражение. – Matt

ответ

1

Похоже, вы просто ищете имена томов. Класс WMI класса Win32_logicaldisk вернет это для установленных устройств. Предполагая, что это было заселено, конечно. В это простейшая форма:

Get-WmiObject Win32_logicaldisk | Where-Object{$_.VolumeName -eq "MyUSBKey"} 

У вас есть какие-то конкретные примеры и регулярное выражение запроса, который вы пытаетесь использовать, чтобы сузить результаты. Поэтому, если вы хотите совместить запрос регулярного выражения:

Get-WmiObject Win32_logicaldisk | 
    Where-Object{Where-Object{$_.VolumeName -match "MTR[A-Za-z0-9]+"}} |   
    Select -Expand DeviceID 

Вы могли бы даже упростить это, если хотите. Просто введите тома, которые начинаются с «MTR». Не такой совершенный, как другой, но так же просто.

Get-WmiObject Win32_logicaldisk | 
    Where-Object{Where-Object{$_.VolumeName -match "^MTR"}} |   
    Select -Expand DeviceID 
+0

Работает отлично. Благодарю. – Addict