Обнаружить изменение буквы диска и переназначить его (букву USB-накопителя) в Windows 10

Время от времени Windows (10) меняет назначенные буквы дисков моих двух подключенных устройств USB типа 3. Поэтому вместо того, чтобы иметь J: с меткой «keedrive» и V: с меткой «вторичный», Windows иногда меняет их местами, J: становится «вторичным», а V: «keedrive». Я пытаюсь создать пакетный сценарий, который проверит, изменилась ли буква диска, и если да, сбросит их, как они были.

В настоящее время мне приходится вручную переназначать буквы с помощью утилиты Diskpart.

Я читал о Как запустить скрипт PowerShell из командного файла и Как зафиксировать вывод в переменную из внешнего процесса в PowerShell, пытаясь получить работающий скрипт. Пока что я увяз на уровне получения вывода команды PowerShell в переменную, не зная, как задать условие проверки букв дисков на основе DeviceID и впоследствии переназначить буквы соответственно. Пожалуйста помоги. Заранее спасибо.

Вот команды PowerShell, которые я придумал

Get-CimInstance -ClassName CIM_StorageVolume | Format-Table -Property DeviceID, DriveLetter, Label | Tee-Object - переменная UsBDrvLetters

Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Веб-скрейпинг, как мы все знаем, это дисциплина, которая развивается с течением времени. Появляются все более сложные средства борьбы с ботами, а...
Калькулятор CGPA 12 для семестра
Калькулятор CGPA 12 для семестра
Чтобы запустить этот код и рассчитать CGPA, необходимо сохранить код как HTML-файл, а затем открыть его в веб-браузере. Для этого выполните следующие...
ONLBest Online HTML CSS JAVASCRIPT Training In INDIA 2023
ONLBest Online HTML CSS JAVASCRIPT Training In INDIA 2023
О тренинге HTML JavaScript :HTML (язык гипертекстовой разметки) и CSS (каскадные таблицы стилей) - две основные технологии для создания веб-страниц....
Как собрать/развернуть часть вашего приложения Angular
Как собрать/развернуть часть вашего приложения Angular
Вам когда-нибудь требовалось собрать/развернуть только часть вашего приложения Angular или, возможно, скрыть некоторые маршруты в определенных средах?
Запуск PHP на IIS без использования программы установки веб-платформы
Запуск PHP на IIS без использования программы установки веб-платформы
Установщик веб-платформы, предлагаемый компанией Microsoft, перестанет работать 31 декабря 2022 года. Его закрытие привело к тому, что мы не можем...
Оптимизация React Context шаг за шагом в 4 примерах
Оптимизация React Context шаг за шагом в 4 примерах
При использовании компонентов React в сочетании с Context вы можете оптимизировать рендеринг, обернув ваш компонент React в React.memo сразу после...
0
0
59
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

$Drive = Get-CimInstance -ClassName Win32_Volume -Filter "DeviceID = '<YourDeviceID>'"
$Drive | Set-CimInstance -Property @{DriveLetter ='<DesiredLetter>:'}

Первая команда возвращает объект CimInstance, а вторая передает его в set-CimInstance.

Еще почитать на эту тему:

Https://devblogs.microsoft.com/powershell-community/change-drive-letters-and-labels-via-powershell/

Здравствуйте, ironcheese. Спасибо за ваш вклад. У меня возникли трудности с фильтрацией на основе «DeviceID», PowerShell выдает ошибку «Неверный запрос», когда я помещаю «DeviceID» в этот формат 1b01-11e8-a051-40e36098bbd3}\'" И если я избавлюсь от \\ и просто введу {8e41d0b6-1b01-11e8-a051-40e36098bbd3} следующий $Drive | Set-CimInstance -Property @{DriveLetter ='Z:'} ничего не сделает. Спасибо

MoLtalbany 10.01.2023 18:35
Ответ принят как подходящий

Наконец-то я заработал скрипт, хотя и использовал другое свойство (SerialNumber) класса Win32_Volume для фильтрации.

$Drive = Get-CimInstance -ClassName Win32_Volume -Filter 'Серийный номер вроде "6316615927"'

$Драйв | Set-CimInstance -Property @{DriveLetter = 'G:'}

Фильтрация также работает со свойством «Метка».

Мне все еще любопытно / смущено, почему я не могу фильтровать с помощью свойства «DeviceID»; поэтому я буду очень рад увидеть решение для этого.

Спасибо.

Другие вопросы по теме