TGViewer
Windows 11, 10, etc - Вадим Стеркин Windows 11, 10, etc - Вадим Стеркин @sterkin_ru · 15.6K subscribers
Post #1927 3.77K
▶️ PowerShell: как определить свободную букву диска
‌
В посте про mountvol я упомянул, что для подключения диска нужна свободная буква. Не всегда она известна заранее. В скриптах эта типовая задача решается конвейером в одну строку:
‌
1/ Создание списка букв
2/ Проверка существующих путей (занятых букв) перебором по списку
3/ Выбор свободной буквы
‌
Второй и третий этапы почти всегда одинаковые:
‌
<буквы> | Where-Object {!(Test-Path $_)} | Select-Object -First 1
‌
Иногда вместо Select-Object используют Get-Random, но это менее эффективно.
‌
А вот на первом этапе бывают варианты. Часто используют оператор Range для диапазона букв. Тут, кстати, два этапа конвейера.
‌
'j'..'z' | ForEach-Object { "${_}:" }
‌
Мне также встречалось перечисление символов ASCII, где 65 - А, 90 - Z. Но оно менее естественное.
‌
65..90 | ForEach-Object { [char]$_ + ":" }
‌
🔥 А недавно мне попался, пожалуй, самый любопытный способ:
‌
Get-ChildItem function:[j-z]: -Name
‌
В этой команде:
‌
🔹 function: - трюк для получения готового списка букв дисков. Здесь #PowerShell обращается к поставщику функций. Выполните Get-ChildItem -Path Function: и вы увидите не только загруженные из профиля функции, но и список букв дисков!
‌
🔹 [j-z]: - регулярное выражение, которое выбирает из списка функций только буквы в заданном диапазоне.
‌
🔹 -Name - параметр форсирует получение только строковых значений, нежели полного объекта
‌
Полная команда для получения первой свободной буквы диска в заданном диапазоне. Для краткости я заменил названия командлетов на их псевдонимы.
‌
dir function:[j-z]: -Name | where {!(Test-Path $_)} | select -First 1
‌
Этот метод должен быть самый быстрый, хотя разница всё равно измеряется долями секунды - в скрипте это не существенно. Тут скорее играет роль, что вы помните или быстрее вводите. На мой взгляд, вариант с диапазоном букв посложнее набирать.
‌
////
‌
Наконец, мне в комментариях к посту про mountvol подписчик Алексей доставлял, что все свободные буквы могут быть заняты разнообразными дисками. Хотя к тому моменту я уже добавил ссылку на статью блога с решением именно этой задачи - подключением диска в папку NTFS.
‌
Впрочем, это не сработает именно для раздела EFI! У mountvol ключ /s предусматривает только подключение в букву диска, потому что у EFI файловая система FAT32! В такой ситуации надо действовать в зависимости от требуемых изменений. Например, для файловых операций можно обойтись без подключения раздела, но для команд bcdedit логичнее освободить букву на время✌
Telegram Windows 11, 10, etc - Вадим Стеркин ⚙️ Как получить доступ к служебному разделу EFI, не изменяя его свойства ‌ Это продолжение сериала про получение доступа к служебным разделам без изменения свойств. В предыдущих эпизодах главным героем был раздел восстановления (WindowsRE). К нему пробирались…
  • 👍 28
  • ❤ 7
  • 🔥 3
More from @sterkin_ru
  1. Oct 16, 2026😎 Дождь начнётся через около 2.5 ч. Но это не точно! Этот #автоперевод Виталий скинул в ч…
  2. Oct 16, 2026📢 Конференция Kuber Conf, анонсированная ранее в канале, переносится на 23 ноября. Все ку…
  3. Oct 15, 2026Post #1928
  4. Oct 9, 2026🧩 Экспресс-уточнение по викторине В чате Alexey Kamanin справедливо заметил, что у чистог…
  5. Oct 9, 2026📢 Разыгрываю два бесплатных билета на Kuber Conf от АОТ ‌ 22 октября сообщество Kubernete…
  6. Oct 8, 2026Post #1924
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →