Telegram Web Link
🔒 KeePass: автоматический ввод в окна без заголовка и трёхэтапный вход

Это четвёртый пост серии про #autotype в KeePass. И сегодня я покажу очень простой приём.

По работе мне регулярно приходится выполнять вход с учётной записью Microsoft 365 в клиент Remote Desktop и офисные приложения. Для аутентификации всплывает отдельное небольшое окно без заголовка. Поэтому непонятно, что прописать в KeePass в качестве заголовка окна.

👉 Ничего! Надо добавить запись для автоматического ввода, оставив заголовок пустым.

Наверное, кому-то это было сразу очевидно. Но я дошёл до решения сам экспериментальным путём :)

▶️ Заодно приведу последовательность автоматического ввода для трёхэтапного процесса аутентификации в Microsoft 365: имя учётной записи -> пароль -> второй фактор аутентификации.

{UserName}{ENTER}{DELAY 5000}{PASSWORD}{ENTER}{DELAY 5000}{TAB}{ENTER}{DELAY 1000}{TAB}{ENTER}{DELAY 2000}{TIMEOTP}{ENTER}

Сначала всё просто - после ввода аккаунта даём 5 секунд на отображение следующего окна, так же и с паролем. На этапе #2FA по умолчанию предлагается ввести двузначное число из Microsoft Authenticator. Однако резервный вариант с вводом шестизначного одноразового кода (OTP) тоже доступен. А его умеет вводить KeePass, о чём был рассказ в канале!

🔓 Хранение пароля и секретного ключа в одной базе - не лучшая идея. Но моя ОС развёрнута в защищённой корпоративной среде, поэтому я считаю это допустимым компромиссом ради личного комфорта.

Вообще, разделение имени пользователя и пароля на разные этапы входа стало очень популярно в последние годы. Так делают Microsoft, Google и многие другие компании. Но после ввода учётной записи реализация этапов отличается. Поэтому последовательность действий надо адаптировать под каждый сервис ✌️
🎄 Встречайте Новый 1ТП18Т!

У Microsoft очередной зачетный #автоперевод (спасибо, Дмитрий). Мы уже обсудили в чате варианты расшифровки этой аббревиатуры, но я не рискну публиковать их в канале 😎

Пусть это будет Новый год! 🎅 С наступающим вас! Пожелание тоже на картинке - "учить больше"! ✌️
Спасибо, что читаете мой канал 👍 С наступающим Новым годом! 🎄 Продолжим в следующем году ✌️
⌨️ Как свернуть активное окно сочетанием клавиш

Вопрос в форуме был с подтекстом - сворачивание надо повесить на макрос мыши в фирменном ПО. Поэтому также подошел бы исполняемый файл - утилита или скрипт.

Автор вопроса сразу сказал, что сочетание Win+↓ не подходит. Мол, когда окно развернуто во весь экран, придется нажимать дважды (уменьшить размер, свернуть). Для макроса это не проблема, кстати. Однако потом надо руками восстанавливать полный размер окна - Win+↑.

🎹 В качестве сочетания предложили Alt+Space N. Но это с английской раскладкой, а с русской - Alt+Space С. На практике бесполезно. Одна из бесящих фич Windows 😡

⚙️ Из утилит посоветовали клавиатурного шпиона aka Punto Switcher и загрузили самопальный экзешник в RAR с предупреждением о ложном срабатывании антивируса 🙄

ТС был счастлив, разумеется. Но я б не стал... Лучше уж попросить ChatGPT написать скрипт Python, AutoIt или чего душа пожелает. Это же не кирпичи таскать :)

Но не факт, что автор вопроса хотел именно свернуть окно. Может, он просто желал убрать его с переднего плана и не представлял себе другого способа. А он есть в Windows испокон веков!

👉 В Windows порядок окон определяет Z-order. Первым в нем идет текущее активное окно. Древнее сочетание Alt+Esc отправляет активное в конец списка. Оно не сворачивается, но может стать невидимым, если полностью перекрыто другими окнами - достаточно одного во весь экран.

Следующее окно в списке становится первым. Пока окно активно, обратное сочетание Alt+Shift+Esc возвращает его в начало списка, однако не разворачивает свернутое.

Если вы последовательно нажмете эти сочетания, будет похоже на два подряд нажатия Alt+Tab. Когда-то в этом диалоге окна отображались именно в порядке Z-order, исходя из поста Раймонда Чена двадцатилетней давности. Но сейчас после Alt+Esc окно перемещается на вторую позицию в Alt+Tab, нежели в конец.

////

В форуме я не получил отзыва ТС на свое предложение. Отреагировал лишь другой участник: "оно же не сворачивает ахаха". Однако спустя пару недель в чате точно такой же вопрос задал Андрей Шубин. И как выяснилось, он просто хотел убирать окно, нежели именно сворачивать его!

Сочетание Alt+Esc Андрея устраивало, если бы не маленькая клавиша Esc. Но это мелочь - с помощью PowerToys можно переназначать отдельные клавиши и сочетания.

Think outside the box ✌️
Опрос: какой сервис для синхронизации файлов с облаком у вас используется на основном домашнем компьютере? Если несколько, выбирайте вариант с самыми ценными файлами.
Final Results
16%
OneDrive
12%
Google Drive
22%
Яндекс Диск
4%
Диск-О
2%
iCloud Drive
7%
Поднят свой сервис (на VPS и т.п.)
5%
Другой сервис
27%
Не синхронизирую файлы с облаком
6%
Моего варианта тут нет
🤖 Об управлении уведомлениями Android для гиков

Думаю, вы видели у "обычных людей" ад уведомлений в шторке. Некоторым моим контактам бесполезно писать в Telegram в расчёте на быстрый ответ, потому что сообщение будет погребёно под уведомлениями десятков каналов.

⚙️ У меня, напротив, весьма специфический подход к управлению уведомлениями.

🔹 Сразу после установки приложения или его первого уведомления я отключаю все ненужные каналы.

🔹 Все важные уведомления идут на часы Amazfit Bip. A там с помощью приложения AmazFit Tools настроены разные шаблоны вибрации и отображения сообщений. Вплоть до регулярного выражения на смс/пуш банка, чтобы показывало только код подтверждения.

🔇 В результате у меня полностью отключены звуковые уведомления в телефоне. Только при звонке он вибрирует, что практически не слышно. Такой расклад повышает зависимость от часов, и у меня есть автоматизации для режима "Не беспокоить" (DND).

1. При выходе из DND часы должны чётко устанавливать соединение с телефоном.

2. Нужно предусмотреть сценарий, чтобы близкие люди могли дозвониться ночью. Разумеется, в телефоне есть приоритетный режим для избранных контактов. Но он бесполезен при полностью отключённых звуках и тихой вибрации / глубоком сне.

С первым пунктом в MIUI исторически было нестабильно. Поэтому я давно создал скрипт Tasker, который при выходе из DND запускает MiFit / Zepp и AmazFit Tools. Однако с обновлением до HyperOS это фактически перестало работать. Пришлось плясать с бубном, добавляя передёргивание Bluetooth, включение дисплея и форсирование подключения в Amazfit Tools посредством их родного плагина 🙄

С ночными же звонками всё "просто". В том же Tasker задано условие: если пропущен звонок от избранного контакта, запускай скрипт↑ И по второму звонку уже будут вибрировать часы.

Морали тут особой нет. Но есть возможности. И костыли, конечно, куда ж без них 🩼🩼 Эта тема первой пришла мне в голову, когда давеча мой друг спросил, что бы мне помешало перейти на iPhone. Впрочем, ему я рассказывать такое не стал - это же для гиков 😎
Викторина. В Windows 11 24H2 работает автоматическое шифрование BitLocker, о чем я писал в канале и блоге. Какие утверждения об этой технологии ОШИБОЧНЫ? Подразумевается стандартное поведение в поддерживаемой конфигурации без участия пользователя.
Anonymous Quiz
18%
Автоматическое шифрование не защищает данные без интернета
13%
Шифруются несъемные диски
8%
Шифрование отключается при переходе на локальный аккаунт
7%
48-значный ключ (пароль) восстановления содержит только цифры
10%
У аккаунта должен быть пароль
24%
Ошибочны 1 и 3
9%
Ошибочны 1 и 5
11%
Ошибочны 3 и 5
⚙️ О параметрах программы установки Windows (setup.exe)

Недавно в форуме я увидел ошибочное утверждение, что setup.exe предназначен исключительно для установки из-под живой системы, нежели из-под Windows PE. Его автор развертывает ОС применением WIM-образа к диску, что могло повлиять на восприятие :)

Да, переустановка поверх запускается только из-под работающей Windows. Но это не единственный способ вызова программы установки!

ℹ️ Первый проход установки ОС не случайно называется windowsPE. Когда вы загружаетесь с флешки или ISO, диспетчер загрузки обращается к boot.wim. А там как раз Windows PE, которая целиком загружается в оперативную память. Поэтому setup.exe запускается именно из PE, хотя и без параметров, что видно на картинке.

👉 Читайте также: Нюансы программы установки Windows.

Однако дистрибутив может лежать на внешнем или сетевом диске. Это повод загрузиться в среду PE (чистую или условного Стрельца) и запустить setup.exe с нужными параметрами. И у Microsoft есть большой документ, описывающий ключи командной строки программы установки: Windows Setup Command-Line Options 📄

В описании каждого ключа имеется раздел Applicability с таблицей, где в первой строке "Setup.exe started from WinPE - Yes/No". То есть, работает ли этот ключ при запуске из PE.

Кстати, начиная с версии 24H2 в PE поддерживаются еще 9 ключей. В том числе:
/CompactOS для сжатия системных файлов.
/PostOOBE, задающий расположение setupcomplete.cmd, который иначе надо добавлять в образ напрямую или с помощью OEM-папок
/ConfigFile, указывающий на INI-файл с ключами (однако над ними преобладают ключи, переданные в командной строке)

Вообще, документация по установке Windows очень приличная и в целом поддерживается в актуальном состоянии. Да и у меня в блоге немало статей с меткой автоустановка. Приятного чтения! ✌️
💩 Тревога В действии

Здесь на панели задач сошлись все звезды:
#автоперевод Warning in effect
коричневый оранжевый уровень опасности
• пиктограмма ветра (а не то что вы подумали :)
🙄 О нововведениях в современной Windows

Много лет назад в Windows Vista переосмыслили работу обычным пользователем. Тогда появился контроль учётных записей (UAC). Причём было только две опции — уведомлять всегда или никогда. Включение порождало слишком много уведомлений, и люди громко жаловались. Поэтому в Windows 7 сделали поменьше уведомлений для администраторов.

⚙️ С другой стороны, обычным пользователям стал доступен ряд настроек, для которых в Windows XP были необходимы права администратора. Например, добавление принтеров, управление электропитанием и настройка часового пояса (но не времени). Последнее регулярно пиарили на разных конференциях — посмотрите, как стало удобно!

Я вспомнил об этом, просматривая описание предварительного февральского обновления для Windows 11 24H2 — KB5050094. Моё внимание привлекло нововведение в Параметрах:

[Settings] New! You can change time zones in Settings > Time & Language > Date & Time. You don’t have to be an admin to make this change.

Ура, теперь не надо быть админом, чтобы менять часовой пояс! Но ведь у нас это было почти 20 лет назад 🤦‍♂️ Впрочем, я не знаю, как давно они сломали.

По состоянию на январь 2024 года проблема воспроизводилась в Windows 10 22H2 и Windows 11 23H2 & 24H2. В Windows 8.1 обычный пользователь может задавать часовой пояс без проблем, но там ещё нет опции автоматического выбора. Замечу, что в актуальных ОС для включения автоматики нужно в настройках конфиденциальности разрешить десктопным программам доступ к местоположению.

////

Вообще, разработчики Windows в последнее время взяли моду выдавать устранённые баги UX за нововведения 😡 Например, под таким же соусом подали исправленное перетаскивание в адресную строку Проводника спустя 9 месяцев после поломки.

Разумеется, они не считают это дефектами, если фича подвергается переработке и получает какие-то другие улучшения. Хорошо, если они понимают деградацию пользовательского опыта и сразу планируют исправление в обозримом будущем, как в случае с адресной строкой.

Но так бывает не всегда. Размещение панели задач сбоку, выпиленное из Windows 11 фактически ради дизайна, до сих пор не вернули. И сломанная смена часового пояса могла у них в бэклоге годами лежать — обычным пользователям слова не давали! Пока кто-то не решил поднять себе KPI выпуском "новой" фичи. И вот, встречайте 🎉

Внимательные читатели заметят на картинке ещё одну новую старую фичу. Но по крайней мере создание папки не выпиливали из классического контекстного меню, которое до сих пор доступно.

Через пару дней я продолжу тему таких нововведений в Windows записью блога. Не переключайте каналы✌️
🔁 Новое в блоге: Нюансы восстановления параметров и приложений из современного бэкапа Windows

Мой товарищ устанавливал систему на новенький Surface, и его заинтриговала возможность восстановить настройки и файлы со старого ПК уже в процессе установки. Правда, не прошло и полчаса, как его постигло жестокое разочарование. В системе не оказалось и половины ожидаемых настроек! 😡

Эта история побудила меня вернуться к теме современного резервного копирования и восстановления в Windows. Я поднял ее осенью 2023 года разбором приложения Windows Backup, но не касался восстановления. Теперь настал и его черед.

К сожалению, похвастаться там особо нечем 🤷‍♂️ Современное резервное копирование и восстановление в Windows – это фактически обертка, в которую завернут старый, хорошо обсосанный леденец.

➡️ Читайте в блоге, как я пришел к такому выводу: https://www.outsidethebox.ms/22565/
🙏 Мой блог https://www.outsidethebox.ms/ снова доступен. И вы можете прочесть свежую статью из утреннего анонса↑

Спасибо всем, кто сообщал о проблеме и благодарил за труды. Иногда надо ощутить нехватку чего-либо, чтобы осознать ценность :)

Технически же от меня там ничего не зависело. Но на другом хостинге именно такого скорее всего не произошло бы. Я давно обдумываю переезд, но все никак не могу решиться. Может быть в этом году ✌️
🕒 Как получить сведения о запланированном задании в PowerShell

Смотрел тут свои старые скрипты, решил поделиться. Задача несложная, однако в зависимости от цели может понадобиться три разных запроса.

1️⃣ Состояние задания - Get-ScheduledTask

Годится запрос по имени задания, в том числе неполному. Заодно выведем чуть больше инфо - полное имя, состояние, адрес.

Get-ScheduledTask -TaskName '*sync*lang*' | fl TaskName,State,URI

TaskName : Synchronize Language Settings
State : Ready
URI : \Microsoft\Windows\International\Synchronize Language Settings


Задание синхронизации языковых настроек включено.

2️⃣ Сведения о последним запуске задания - Get-ScheduledTaskInfo

Здесь наряду с именем задания требуется еще и путь в -TaskPath. Либо в качестве имени указывайте URI из запроса выше.

Get-ScheduledTaskInfo -TaskName '\Microsoft\Windows\International\Synchronize Language Settings

LastRunTime : 1/25/2025 10:22:22
LastTaskResult : 0
NextRunTime :
NumberOfMissedRuns : 0
TaskName : \Microsoft\Windows\International\Synchronize Language Settings


LastTaskResult выводит код завершения предыдущего запуска. 0 означает успех, 1 - неудачу, остальное надо смотреть по коду.

На практике задачи 1 и 2 чаще объединяются в конвейер. Причем можно с ходу фильтровать по неполным именам нескольких заданий, обходясь без Where-Object.

Get-ScheduledTask -TaskName *backup*,*sync* | Get-ScheduledTaskInfo | fl TaskName,LastRunTime


3️⃣ Параметры задания - Export-ScheduledTask

Export-ScheduledTask -TaskName '\Microsoft\Windows\International\Synchronize Language Settings'


Выводится XML, как в экспорте задания из планировщика. PowerShell легко перемещается по узлам.

[xml]$task = Export-ScheduledTask -TaskName '\Microsoft\Windows\International\Synchronize Language Settings'
$task.Task.Triggers.LogonTrigger.Delay

PT30S


Задание отложено на 30 секунд после входа в систему.

////

Создание запланированного задания в #PowerShell будет посложнее. Я показывал это в блоге, в том числе в сравнении с утилитой schtasks. Бывает проще импортировать подготовленный XML. Пример уже был на канале ✌️
🧹 Удаление временных файлов из служебных профилей

Недавно я анализировал недостаток дискового пространства на одной системе. Помимо прочего утилита dfp выдала такое:

1.6G      527      191 C:\Windows\ServiceProfiles
1.6G 287 81 C:\Windows\ServiceProfiles\NetworkService
1.6G 281 71 C:\Windows\ServiceProfiles\NetworkService\AppData
1.6G 244 39 C:\Windows\ServiceProfiles\NetworkService\AppData\Local
1.6G 243 34 C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp


Я натравил её на папку Temp и выяснил, что 1.6 GB занято древней папкой с именем типа E58DAD6F-63DE-461C-AB9F-7F58DDC916D9

ℹ️ NetworkService и LocalService - служебные аккаунты, чьи профили хранятся в папке Windows. Их содержимое аналогично профилям интерактивных пользователей из папки C:\Users.

Удаление временных файлов безвредно, причем ухищрений не требуется. В смысле не надо ломиться в системные папки как лось, меняя на ходу разрешения NTFS. Просто в #PowerShell от имени администратора:

Remove-Item -Force -Recurse -Path 'C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp\E58D*'


Total Commander или FАR от админа тоже годятся ✌️
😎 Знакомая прислала скриншот веб-редактора аудиофайлов

- какую кнопку нажать, чтобы выйти из этого режима?
- Esc
- сын то же самое сказал, не срабатывает... очень много работы сделала(((
- в смысле боишься потерять?
- да, уже было такое
- перетащи туда файл
- я никогда так не делала
- повод попробовать :)
- ура!!!

Я уже вижу, как вы прониклись чувством превосходства над неопытным пользователем :) Но в этой истории есть отличная мораль. В любой непонятной ситуации следуйте указаниям на экране! А внимательно читать и анализировать написанное - это высший пилотаж ✌️
Викторина / опрос. В файле hosts на разных строках прописаны два разных IP-адреса, указывающих на один домен. В общем случае и при прочих равных, в какой IP-адрес Windows преобразует доменное имя? В вариантах ответа порядок адресов сверху вниз.
Final Results
43%
Первый
10%
Кажется, первый
16%
Второй
8%
Кажется, второй
6%
Ни первый, ни второй
18%
Правильного варианта тут нет
⚙️ Нюансы префетчинга приложений в Windows

Сегодня в рубрике "Возвращаясь к напечатанному" префетчинг приложений и количество записей, которые он хранит и обрабатывает.

• В 2013 году я разбирал префетчинг в рамках мифов оптимизации SSD
• В 2019 году он снова попал в фокус в статье Нюансы отключения службы SysMain в Windows

Niks спросил, работает ли префетчинг по умолчанию, когда система установлена на SSD. Да, работает, и это легко проверить по мотивам статьи про SysMain:

Get-MMagent

ApplicationLaunchPrefetching : True
ApplicationPreLaunch : True
MaxOperationAPIFiles : 512
MemoryCompression : True
OperationAPI : True
PageCombining : True


Параметр ApplicationLaunchPrefetching - это он. Вообще, этот префетчинг еще времён XP, и по большому счету с тех пор ничего не изменилось. Однако сравнивая вывод наших команд, я заметил, что отличается значение MaxOperationAPIFiles. Это предельное количество файлов в сфере префетчинга.

🔢 В Windows 10 и ранее оно по умолчанию 256, а в Windows 11 — 512 (так же и в серверных ОС). Думаю изменение связано с тем, что сама ОС разрослась с 2006 года и запускает больше своих исполняемых файлов.

Niks интересовался, стоит ли увеличить значение до 2048. Чтобы ответить на этот вопрос, нужно:

1. Понимать, запускаются ли .EXE с жесткого диска
2. Проанализировать файлы в папке C:\Windows\Prefetch\

Я не думаю, что древний префетчинг способен ускорить запуск программ с твердотельных накопителей. Но запуск исполняемых файлов (например, игр) с жесткого диска еще может быть актуален. Для оценки можно посчитать количество файлов в папке и сопоставить с лимитом. В #PowerShell от имени администратора:

(Get-ChildItem "C:\Windows\Prefetch\*.pf" -File).Count

ℹ️ На количество файлов могут влиять разные факторы. Например, едва установив систему, вы начинаете ставить и запускать любимые приложения. Каждый установщик - это как минимум один исполняемый файл. С другой стороны, после чистой установки система сама оптимизирует себя, что может быть сопряжено с запуском различных .EXE.

Все это оседает в папке Prefetch. По достижении предела старые записи будут вытеснены автоматически, но "одноразовые" установщики и не нужны.

Если в обжитой системе вы запускаете .EXE с HDD, а количество PF-файлов близко к лимиту, может иметь смысл увеличить предельное значение.

Set-MMAgent -MaxOperationAPIFiles 1024

Так, у Niks спустя две недели после очистки и увеличения лимита в папке стало 354 PF-файла. Что превышает стандартный предел в его Windows 10, но далеко от 512 в Windows 11.

Измерить же реальный прирост скорости запуска исполняемых файлов затруднительно. Зато душу будет греть тот факт, что вы оптимизировали свою ОС не случайно найденной в интернетах подборкой твиков, а на основе грамотного анализа ✌️
😎 Коммунальные услуги теперь и в вашем SSD

Говорят, пока только для москвичей ;)

Наверняка в оригинале - utilities. Основное значение слова - организации, осуществляющие поставку газа, воды и электричества потребителям. А не вот этих ваших утилит :)

Спасибо dartraiden и ԤИОНЕР за очередной #автоперевод ✌️
🌐 О приоритете записей в файле hosts

В чате обсуждали использование файла hosts с целью запретить приложению подключение к своим адресам. Речь зашла о возможных дубликатах записей. Один опытный участник заявил:

hosts читается сверху вниз и будет использован последний дубликат

Другой не менее опытный участник это полайкал. Судя по результатам викторины в виде опроса, так думает лишь четверть подписчиков. Правильно же ответили более 40%, что для моих викторин - отличный результат 😎

Я поинтересовался у автора заявления, как бы он его проверял. Тот предложил вписать в файл две строчки и пропинговать.
127.0.0.1 ya.ru
127.0.0.2 ya.ru


Я бы тоже так делал! И вот результат:
gc "C:\Windows\System32\drivers\etc\hosts" -Tail 2; ping ya.ru
127.0.0.1 ya.ru
127.0.0.2 ya.ru

Pinging ya.ru [127.0.0.1] with 32 bytes of data:
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128


👉 Получается, что Windows использует первый адрес. И Linux тоже!

Разумеется, такое утверждение нужно снабжать примечаниями. Опрос не случайно ограничивался Windows и с оговоркой в общем случае и при прочих равных. На уровне ОС возможны исключения, хотя примеров у меня нет.

📄 Несколько человек поднимали вопрос о влиянии кэша DNS. Однако в соответствии с одной из старейших актуальных статей базы знаний Microsoft, Microsoft TCP/IP Host Name Resolution Order, клиент Windows смотрит в локальный файл hosts прежде чем опрашивать серверы DNS. Кэш DNS в статье явно не упомянут, но это производная от серверов.

Сторонние же программы могут применять свой алгоритм чтения файла hosts либо вообще игнорировать его. Например, разработчикам Firefox пришлось реализовывать свой парсер hosts, чтобы он не игнорировался при использовании встроенного в браузер резолвера DoH (спасибо, dartraiden). А в Linux всегда найдется какой-нибудь дистрибутив с альтернативной реализацией 🐧

Я сам когда-то думал, что выигрывает последняя запись. Пока не столкнулся с этим по работе. У тестовых серверов поменялись IP-адреса, и я добавил новые записи в конец файла hosts. Однако рабочее приложение не смогло подключиться по доменному имени. Так и узнал ✌️
🚀 Ускорение загрузки файлов в PowerShell

Недавно я перепроверял давно опубликованный в блоге скрипт для скачивания файла с помощью #PowerShell, и слишком уж долго шла загрузка. Хочу поделиться решениями.

1️⃣ Отключение прогресса
$ProgressPreference = 'SilentlyContinue'

В принципе, эта переменная может слегка ускорить процесс и снизить нагрузку на ЦП не только при скачивании файлов. Но конкретно для командлета Invoke-WebRequest (псевдоним iwr) разница значительная! Один и тот же файл размером 175 мегабайт без прогресса у меня на разных системах скачивался от 16 до 42 секунд, а с прогрессом - от 3 до 13 минут! 🤔

У этого командлета проблема наблюдается только в Windows PowerShell 5.1, но не в PowerShell Core. Я писал об этом в канале 7 лет назад :) И недавно краем глаза где-то видел, что якобы в 5.1 уже починили. Мои тесты это не подтверждают.

2️⃣ Подстановка юзер-агента
На самом деле даже без прогресса у меня Invoke-WebRequest качал слишком долго. Я предположил, что сайт специально притормаживает отдачу, и решил прикинуться браузером.

-UserAgent "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"

После этого скорость окончательно наладилась!

3️⃣ Загрузка с помощью BITS
В Windows помимо командлетов Invoke-WebRequest и Invoke-RestMethod также можно скачивать файлы с помощью Start-BitsTransfer. Этот командлет запускает джоб с помощью службы BITS (фоновая интеллектуальная служба передачи данных). Именно ее использует центр обновления Windows.

Это не совсем про ускорение, а про альтернативы. Но в моем случае был сайт Microsoft, и родную BITS он не тормозил в отличие от iwr без юзер-агента.

////

▶️ Скрипт для экспериментов:

$file = "$env:temp\mpam-fe.exe"
$uri = 'https://go.microsoft.com/fwlink/?LinkID=121721&arch=x64'
$u = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'
$ProgressPreference = 'SilentlyContinue'

Measure-Command {
Invoke-WebRequest -Uri $uri -OutFile $file -UserAgent $u
}
Measure-Command {
Start-BitsTransfer -Source $uri -Destination $file
}


Скрипт скачивает актуальный файл сигнатур защитника Windows с этой страницы. Но учтите, что для обновления сигнатур из консоли есть методы получше ✌️
2025/10/26 07:41:57
Back to Top
HTML Embed Code: