Powershell отключить usb устройство
Я установил концентратор USB 3.0 на моем настольном компьютере.
Я использую его для подключения внешнего диска USB 3.0 для целей резервного копирования, и у меня возникает проблема: Windows 7 по умолчанию включает энергосбережение для указанного концентратора, что приводит к отключению диска во время интенсивных операций ввода-вывода (например, в моем запланированном резервном копировании на 8 вечера).
Я могу отключить этот параметр, выполнив следующие действия:
Перейдите в Диспетчер устройств> Щелкните правой кнопкой мыши концентратор> Свойства> Управление питанием> Снимите флажок Разрешить компьютеру выключать это устройство для экономии энергии.
Жаль, что каждый раз, когда я перезагружаю компьютер, флажок снова проверяется. Есть ли способ отключить этот параметр навсегда?
РЕДАКТИРОВАТЬ : я отредактировал мой вопрос с фактическими английскими именами для настроек выше (это было не очень ясно раньше)
EDIT : Peter Fitzgerald «S ответ описывает именно точто я делалсих пор. Каждый раз, когда я перезагружаюсь, флажок снова отмечается, я ищу способ навсегда отключить его.
EDIT : после прочтения Synetech «сек ответа , я былсостоянии отследить запись реестракоторый изменяется при изменении параметра, который:
Этот ключ изменяется консолью управления всякий раз, когда я снимаю флажок, а также когда я деактивирую и снова активирую устройство с помощью процесса System. Плохо то, что любая настройка в авторизации загадочно игнорируется, и даже при отказе каждой привилегии для всех ключ всегда устанавливается в 1.
Я попытался найти в Интернете, и я нашел это руководство Microsoft . Попытка установить каждый ключ, который они описали, не помогла, кажется, эти ключи игнорируются. Я даже попытался скопировать правильный путь для ключей из существующего .INF, найденного в сети (какие ключи ставить /WDF и какие ключи ставить под родительским), вот так , но я ничего не получил.
Другая полезная информация:
- под HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\FLUSB\ROOT_HUB_FL30\ , у меня также есть эти два голоса: 5&f0b5d82&0 и 5&21f33a01&0 , который, кажется, отражает конфигурацию ключа выше. Единственное IdleInWorkingState изменение, однако, это то, что описано выше.
- когда я вручную редактирую регистр, значение флажка в диспетчере устройств не меняется, его нужно где-то кэшировать.
@ and31415: нет, это не так. Мне тоже пришлось отключить это довольно давно, но после перезагрузки все так и осталось.
Установлено ли значение Отключено: Панель управления -> Параметры электропитания -> Изменить параметры плана -> Изменить дополнительные параметры питания -> Параметры USB -> Настройка выборочного приостановки USB.
Что делает ваш USB3? У меня вообще нет вкладки «Управление питанием», и она никогда не отключается полностью.
Я установил концентратор USB 3.0 на моем настольном компьютере. Я использую его для подключения внешнего диска USB 3.0 в целях резервного копирования, и у меня возникает проблема: Windows 7 по умолчанию включает энергосбережение для указанного концентратора, что приводит к отключению диска во время интенсивных операций ввода-вывода
Вы уверены, что привод отключается к управлению питанием, а не просто потому, что он пытается потреблять слишком много энергии? Вы можете проверить потребление энергии на USB-концентраторе через Диспетчер устройств (рисунки 1 и 2). Убедитесь, что мощность, которую концентратор может предоставить для каждого порта , достаточна для внешнего диска. Если нет, вы можете использовать Y-адаптер USB (рис. 3 и 4) для питания двух портов. (Внешние накопители высокой мощности обычно поставляются с Y-переходником специально для этой цели, поэтому дважды проверьте коробку и руководство.)
Я могу отключить этот параметр, выполнив следующие действия: Перейдите в Диспетчер устройств> Щелкните правой кнопкой мыши концентратор> Свойства> Управление питанием> Снимите флажок Разрешить компьютеру выключать это устройство для экономии энергии.
Жаль, что каждый раз, когда я перезагружаю компьютер, флажок снова проверяется. Есть ли способ отключить этот параметр навсегда?
Если отключение этого параметра действительно решает проблему, то проблема заключается в том, чтобы заставить его придерживаться, а не возвращаться. Одним из вариантов является использование что - то вроде Process Monitor с набором фильтров для соответствующей записи в реестре ( HcDisableSelectiveSuspend ) , чтобы увидеть , что программа изменяет его так , что опция выключена (он должен быть установлен , 1 чтобы отключить управление питанием).
Кстати, вы подключаете диск к различным портам USB? Что касается касается окна, «известное устройство» представляет собой сопряжение из устройства + порт , так что если вы уже подключили устройство к порту А и пусть Windows , установить драйверы для него, то позже вы подключите сохранить устройство в порт B, Windows увидит его как новое устройство и (пере) установит для него драйверы вместе с настройками по умолчанию, Поэтому вы должны переустановить все настройки, когда вы подключите его к новому порту. После этого Windows должна запомнить настройки как для нового, так и для старого порта. Возможно, вы захотите подключить свои накопители один раз к каждому USB-порту и настроить их так, чтобы вы могли быть уверены, что все они будут настроены в будущем, независимо от того, к какому порту вы их подключите. (То же самое касается букв дисков, но они, как правило, менее надежны из-за эфемерной природы букв дисков для съемных томов.
Один из способов предотвратить восстановление настроек в Windows - просто запретить доступ к настройкам. Это требует использования редактора реестра, который может быть рискованным, если вы не будете осторожны, поэтому примите обычные меры предосторожности при резервном копировании и перепроверьте, прежде чем вносить изменения (особенно при удалении чего-либо, что вам не следует делать здесь в любом случае).
Сначала вам нужно найти соответствующий идентификатор устройства:
- Откройте диалоговое окно « Свойства корневого концентратора USB » для своего концентратора в диспетчере устройств (рисунок 1), затем перейдите на вкладку « Управление питанием ».
- Измените значение Allow to turn off флажка (не важно на что, просто измените его), но не нажимайте OK (рисунок 5)
- Запустите Process Manager и установите фильтр (рисунок 6):
- Ctrl + L
- Набор для Path , contains , DisableSelectiveSuspend , Include
- щелчок Add
- Установить еще один фильтр для Operation , contains , setvalue , Include
- Add
- щелчок OK
Запишите четырехзначный идентификатор устройства после GUID (рисунок 7); в этом примере 0055 :
Нажмите на строку в Process Monitor, нажмите Ctrl +, J чтобы открыть Regedit и перейти непосредственно к клавише (если это не работает, откройте Regedit и вручную перейдите к клавише)
Настройте параметр на то, что вы хотите, чтобы он был в последний раз (снимите флажок на вкладке Управление питанием и нажмите OK )
Теперь заблокируйте эту настройку и заблокируйте доступ к ключу (рисунок 8):
Теперь никто, не вы, даже сама система не смогут изменить настройку (но они все равно могут ее прочитать), поэтому она всегда должна оставаться на том же уровне, что и вы, прежде чем устанавливать ее только для чтения. (При необходимости вы можете восстановить доступ для записи, удалив разрешения для конкретного элемента в диалоговом окне « Дополнительные параметры безопасности » и повторно установите Inherit from parent флажок.
Конечно, вам нужно будет перезагрузить компьютер, чтобы убедиться, что настройки остались прежними.
Если диск по- прежнему завершает работу, попробуйте установить HKLM\System\CurrentControlSet\Services\usb\DisableSelectiveSuspend для 1 и сделать его только для чтения , как описано выше. Этот параметр отсутствует в нормальной системе, и при этом он не задокументирован, как HcDisableSelectiveSuspend (единственные ссылки на него находятся на страницах сообщества), но Windows, похоже, запрашивает это значение раньше HcDisableSelectiveSuspend (рисунок 7), поэтому его стоит попробовать.
На этом этапе, если вы хотите, вы можете вернуться и диагностировать основную проблему, а не просто лечить симптом. Вы можете использовать вышеупомянутый фильтр, чтобы иметь доступ к записи в журнале Process Monitor для записи реестра во время запуска (« Параметры» → «Включить ведение журнала загрузки» ) и во время завершения работы (что немного сложнее ), чтобы точно определить, что его меняет. Тогда вы можете скрестить пальцы и надеяться, что есть способ предотвратить это.
Рисунок 1 : Снимок экрана USB-концентратора в диспетчере устройств
Рисунок 2 : Скриншот энергопотребления на USB-концентраторе
Рисунок 3 : Фотография Y-адаптера USB
Рисунок 4 : Схема использования USB Y-адаптера
Рисунок 5 : Снимок экрана вкладки «Управление питанием» USB-концентратора
Рисунок 6 : Необходимые фильтры Process Monitor
Рисунок 7 : Снимок экрана соответствующей записи реестра в результатах Process Monitor
Рисунок 8 : Блок-схема установки раздела реестра только для чтения
Прежде всего, спасибо за ваш потрясающий ответ, он определенно находится в выигрышном положении для награды. Я последовал вашему совету, и хотя я обнаружил дополнительные детали, проблема еще не решена. Я соответственно отредактировал свой вопрос, надеюсь, вы сможете получить дополнительную информацию из моего редактирования.
Зайдите в диспетчер устройств, раскройте список дерева в разделе «Контроллеры универсальной последовательной шины», щелкните правой кнопкой мыши запись для устройства и выберите свойства.
Перейдите на вкладку «Управление питанием» в диалоговом окне свойств и снимите флажок «Разрешить компьютеру выключать это устройство для экономии энергии».
Если вы используете ноутбук, вам также может потребоваться перейти к расширенным настройкам схемы электропитания и отключить параметр, позволяющий Windows отключать питание устройств, когда они не используются.
Спасибо за Ваш ответ. Извините, если из моего вопроса было не ясно (я использую Win 7 на итальянском, и я пытался переводить на лету), но это именно то, что я делал до сих пор.
Как программно можно отключить / блокировать USB порт (чтобы девайс в это время был неактивен) ?
Сначала думал отключать конкретное устройство, перепробовал несколько вариантов c enSO и переведённые на ruSO , но все упиралось в то, что некоторые устройства отключить было невозможно.
Подумал что можно тогда просто отключать USB порты.
На enSO нашёл про отключение всех портов сразу и что этот способ будет работать только после перезагрузки.
А можно ли отключать питание / блокировать конкретный USB порт без перезагрузок ? Или же отключать не отключаемые устройства ?
Из скрина, конечно, ясно, о какой OS идёт речь, но все же стоило добавить об этом информацию явно в вопрос/тэги)
2 ответа 2
Нашел в интернете класс:
Если ты на руках имеешь GUID и instancePath (то есть путь в менеджере устройств) то девайс можно отключить следующим образом:
конкретно этим кодом и конкретно этими значениями я себе отключил мышку для теста :)
Но этим способом так же под вопросом выйдет ли отключить конкретный девайс. Не все девайсы это поддерживают.
Так же, судя по тексту, нужно твою прогу компилить именно в х64 (в той платформе -- в которой у тебя операционка).
С поиском GUID девайса все довольно просто: девайс менеджер -> ищешь нужный девайс -> пропертиз -> Ивентс -> в блоке инфрпмации будет "Class Guid".
с поиском программного пути конкретного девайса разберешся сам. Вопрос стоял об отключении девайса :)
А можно ли отключать питание
Внезапно (для меня лично), но это возможно.
Как видно по второму ответу прога DevManView.exe умеет отключать в рантайме. Значит это ВОЗМОЖНО (лично я думал что это блокировано на хардварном уровне) . Но как сделать это напрямую из шарпа я не подскажу. :) Только если использовать консольные возможности этой проги -- снова таки, по линке описано как.
блокировать конкретный USB порт без перезагрузок?
Не понимаю что такое "блокировать". Если ты про просто дисейбл устройства как через девайс менеджер - то реализация выше. Без перезагрузок.
Если ты про "блокировать ручное включение девайса" -- ты можешь просто устроить слежку за тем, не включили ли этот девайс без твоего разрешения в отдельном потоке и автоматом отключать. Криво, но будет работать как тебе нужно.
Или же отключать не отключаемые устройства?
Наверное они на то и отключаемые, что бы их не отключали. Вряд ли.
Только если питание рубонуть.
UPD: как обозначил MSDN.WhiteKnight в коментариях, то вполне возможно что неотключаемые устройства являются "составными". То есть если ты отключишь несколько дочерних, то и это неотключаемое будет отключено.
Make the world a better place by sharing knowledge, ideas and anything that you can give that comes from the heart.
Labels
- Get link
- Other Apps
Divine Mercy Chaplet Guide (A Powerful prayer) BFF = Be Filled Faith:
- Get link
- Other Apps
Popular posts from this blog
How to check office version from command line
The are quite a few ways to check office version it can be done via registry, PowerShell or VBScript and of course, good old command line can also do it. Checking Windows office version whether it is Office 2010, Office, 2013, Office 2016 or other version is quite important to check compatibility of documents; or just a part of software inventory. For PowerShell this simple snippet can check the office version: $ol = New-Object -ComObject Excel.Application $ol . Version The command line option will tell you where’s the path located; the result will also tell whether office is 32-bit, 64-bit and of course the version of the office as well. Here’s the command that will check the office version and which program directory the file is located which will tell whether it’s 32-bit or 64-bit. Command to search for Excel.exe: DIR C:\ /s excel.exe | find /i "Directory of" Above command assumes that program files is on C: drive. Sample Outpu
- Get link
- Other Apps
Search This Blog
Copy a single file using robocopy
Copy a single file using robocopy from a local folder to a shared folder on the network. A simple rule of thumb before any disaster strike, don't interchange the source and the destination. If source and destination is mistakenly reverse, files might get overwritten. To avoid any loss of data do a test with a dummy file to ensure things work perfectly. Robocopy [source] [destination] [file to be copied] robocopy c:\local_c_folder \\PC_network\shared_folder file_to_be_copied_xx.txt The command will be completed successfully provided the network access right has no issues. Robocopy works quite good on large files. A simple copy or xcopy command will also work but the speed might vary. However, if the file (ex. an ISO file) and is more than 4GB and the filesystem of the thumbdrive or the storage is FAT system, then robocopy or any methods of copying will not work. Since FAT has a file size limitation of less than 3GB. Robocopy is free it can be acce
Я пытаюсь отключить внешний USB-накопитель с помощью powershell и не могу это сделать. Следующий скрипт - это то, что я использую:
Затем я проверяю свой компьютер, чтобы убедиться, что диск отключен, но это не так.
Булевы параметры $ force и $ constant были опробованы с разными перестановками, но безрезультатно. Код выхода, возвращаемый командой dismount, изменяется при переключении параметров.
Документация для кода выхода 2 указывает, что существуют существующие точки монтирования как причина, по которой он не может отключиться. Хотя я пытаюсь отключить единственную существующую точку монтирования, поэтому я не уверен, что этот код выхода пытается мне сказать.
Уже пройдя через Интернет для людей, сталкивающихся с подобными проблемами, я нашел только одну дополнительную команду, чтобы попробовать, и это следующее:
Эта дополнительная команда не помогает.
У меня заканчиваются вещи, чтобы попробовать, поэтому любая помощь, которую кто-либо может мне дать, будет принята с благодарностью.
Вы, вероятно, не хотите отключать USB-накопитель. Позже вам придется переназначить букву диска в управлении дисками.
Чистое решение, которое не оставляет полузапеченных открытых ссылок, как это делает пример из pk:
Мое ранее опубликованное решение было действительно правильным. Я немного неуверен в том, как я когда-либо предлагал это! Пожалуйста, используйте этот метод.
Обратите внимание, что это может быть выполнено в виде одной строки в диалоговом окне «Выполнить»: powershell (New-Object -comObject Shell.Application).Namespace(17).ParseName(\"E:\").InvokeVerb(\"Eject\")
Я не могу сделать большую работу, отвечая со стороны PowerShell, возможно, вы захотите посмотреть, как mountvol работает . Существуют разные степени демонтажа.
Маунтвол или Маунтвол /?
Отображает имя, глобальный уникальный идентификатор (GUID) и местоположение тома.
Mountvol [диск:] путь имя_тома
Создает новую точку монтирования тома. Укажите либо корневой каталог с буквой диска, либо существующий пустой каталог NTFS в качестве источника точки подключения и имя тома в качестве цели.
Маунтвол [диск:] путь / D
Удаляет существующую точку монтирования тома.
Маунтвол [диск:] путь / л
Перечисляет имя тома для данной точки монтирования тома.
Я попытался сделать что-то похожее на то, что вам требовалось в VBScript для переупорядочения устройств на старых рабочих столах, где монтирование дисков для устаревшего оборудования было слишком утомительным для удаления (читай флэш-диск), мешало сочетаниям клавиш в пользовательском графическом интерфейсе, где я мог только явно указать точки монтирования ( D :, E :, F :) с определенной целью. Это стало невероятно разочаровывающим, и вам нужно размонтировать и перемонтировать все, используя входы и выходы mountvol, чтобы убедиться, что все прошло хорошо и продолжить вносить изменения. Надеюсь, тебе повезло больше, чем мне.
Я создаю сценарий резервного копирования для Windows 7, и последнее действие, которое я хочу выполнить, - это безопасно «извлечь» USB-накопитель, на который он выполняет резервное копирование. У меня сложилось впечатление, что при постоянном подключении накопителя к одному и тому же порту USB будет сохраняться один и тот же DEV_ID (поправьте меня, если я ошибаюсь). С помощью командной строки (или PowerShell), как я могу сказать Windows, чтобы безопасно удалить оборудование автоматически без участия пользователя?
Точно так же было бы полезно знать о других ОС, у которых есть способ сделать это.
Я должен признать разочарование некоторыми «ответами», приведенными ниже, которые явно не понимают, о чем идет речь, и предоставили варианты, которые явно бесполезны для задачи автоматизации, как об этом просили. ಠ_ಠ
> У меня сложилось впечатление, что при подключении накопителя к ОДНОМУ USB-порту все время будет сохраняться один и тот же DEV_ID, поправьте меня, если я ошибаюсь. Это верно. Windows рассматривает диск и порт, к которому он подключен, как идентифицирующую пару. Подключив его к другому порту (к которому он никогда не подключался), вы активируете функцию установки драйверов Windows. Хуже того, если вы присвоили тому непоследовательную букву диска, то при подключении его к новому порту эта буква не будет сохранена, и она получит следующую доступную букву, и вам придется снова назначать букву вручную.
(Как ни странно, если вы подключаете диск к порту и позволяете Windows установить для него драйверы, затем назначаете непоследовательную букву диска, а затем отключаете его от вилки другого диска той же марки, модели, и размер, то Windows будет обрабатывать его точно так же, как если бы вы снова подключили предыдущий диск.)
Не могли бы вы обновить название, чтобы быть правильным. Я искал ответы на удаление USB-устройств, а не USB-накопителей.
RemoveDrive хорошо послужил мне в прошлом
Это сработало для меня. Интересно, что WqlEventQuery, который я подключил, все еще ждет срабатывания, пока вы физически не извлечете диск. Не знаю об этом, но это меня удивило. Не бывает проблемой для меня в этом случае.
RemoveDrive - это хорошо, но проблема в том, что он фактически удаляет весь диск. Для карт-ридеров вместо простого извлечения карты (например, щелчка правой кнопкой мыши и выбора «Извлечь из моего компьютера») и предоставления возможности подключить другое устройство, он удаляет весь карт-ридер, требуя его физического отключения и повторного подключения. подключен или, что еще хуже, перезагружается, если устройство чтения карт памяти встроено (это можно сделать с помощью программного обеспечения, но это раздражает).
Помимо RemoveDrive Уве Зибера, упомянутого в другом ответе, существует целый ряд утилит, которые могут это сделать. Вот небольшой список:
USB Disk Ejector - это, прежде всего, утилита на основе графического интерфейса, но она может использоваться с равной эффективностью из командной строки для извлечения диска, с которого запускается программа, или любого диска, указав букву диска / (частичное) имя диска / точку монтирования и т. Д. Бесплатный и открытый исходный код.
Microsoft DevCon - это версия диспетчера устройств для командной строки. Помимо исходной версии эпохи Windows 2000 / XP, доступной на странице KB, существуют новые версии (как 32-разрядные, так и 64-разрядные), доступные из различных источников MS, как упомянуто в этой статье « Где найти DevCon.exe» . DevCon.exe для Windows 7 (и, возможно, также для Windows 8) находится в соответствующем наборе драйверов Windows (WDK) , как указано в этой теме (который также содержит ссылки для загрузки извлеченного исполняемого файла ).
devcon status * или devcon hwids * или devcon findall =usb (для более компактного списка) следует указать аппаратный идентификатор устройства. Например:
USB \ VID_0781 & PID_7113 \ 0001162825
Имя:
Драйвер запоминающего устройства USB работает.Затем вы можете попробовать удалить устройство с помощью devcon remove "USB\VID_0781&PID_7113" (подстановочные знаки, такие как *, разрешены, но будьте осторожны, иначе вы можете полностью удалить что-то еще!)
Кто-то спросил: « Существует ли команда DOS prompt (cmd.exe из Win7) для извлечения флэш-диска? », Которая, к сожалению, была закрыта как дубликат этого потока. Однако вопрос был об извлечении USB-накопителей во время работы в консоли восстановления Windows / командной строке восстановления системы , поэтому вряд ли какая-либо из приведенных выше утилит поможет. В такой ситуации должен работать следующий метод с использованием Diskpart :
Введите diskpart и дождитесь приглашения diskpart ( DISKPART> )
Тип list volume
Внимательно запишите номер тома USB-накопителя (для справки используйте перечисленные свойства, такие как буква диска, метка, тип и размер)
Тип select volume , где указан номер тома, указанный выше
Тип remove all dismount
Введите, exit чтобы выйти из Diskpart
Теперь вы сможете безопасно удалить USB-накопитель, не опасаясь потери данных.
@zundarz: Всегда пожалуйста! Политика удаления по умолчанию в Windows для съемных устройств - « Быстрое удаление» , которая отключает кэширование записи и позволяет извлекать диск без необходимости его безопасного удаления. Смотрите этот скриншот для более. Таким образом, предложение Джареда о срыве диска обычно не должно приводить к потере данных, если съемные диски также обрабатываются в консоли восстановления также. Тем не менее, для душевного спокойствия я всегда стараюсь безопасно извлекать каждый диск перед его извлечением. Может быть плацебо, но мешает мне беспокоиться. :)
PS Будьте осторожны с Diskpart - он мощный и, следовательно, довольно опасный. Причина, по которой я использовал его для размонтирования диска, заключается в том, что он доступен как в консоли восстановления XP, так и в параметрах восстановления командной строки Vista / 7 / командной строке.
Чтобы отменить в remove all dismount команду , которую вы должны использовать mountvol команду. Для получения дополнительной информации см. Библиотеку Technet здесь, а также здесь . После того, как вы использовали, mountvol вы должны перезагрузиться, чтобы изменения вступили в силу. Кроме того, вы также можете использовать Управление дисками, чтобы назначить новую букву диска.
Чтобы ответить на этот вопрос . Вам не нужны сторонние вещи.
С помощью командной строки (или PowerShell), как я могу сказать Windows, чтобы безопасно удалить оборудование автоматически без участия пользователя?
Выполните эту команду: RunDll32.exe shell32.dll,Control_RunDLL hotplug.dll для вызова диалогового окна «Безопасное извлечение устройства»:
Comments
Post a Comment
PowerShell disable USB ports
Disabling USB ports is quite annoying of course, but if security is a concern then I guess it is justifiable especially computers that can easily be accessed by unwanted guests or individuals.
It will also protect the network or computers from getting malware's or viruses that is transferred or copied via USB storage.
Multiplication Table for early learners
Читайте также: