Compress-Archive и Expand-Archive появились только в PowerShell 5.0 (Windows 10). А как до этого из ситуации выходили сами сотрудники Microsoft, когда не могли задействовать сторонние средства для создания ZIP-архива?
⌛️ Конечно, были способы. Вот, например, некто David Aiken показывает в блоге создание и распаковку ZIP-архива с помощью COM-объектов. Кстати, он пакует гаджет боковой панели Windows Vista - 2007 год! Но это демонстрационное, а не производственное решение. А что у них в проде?
Недавно я узнал один из ответов на этот вопрос, изучая содержимое диагностического пакета Windows Update, входящего в состав ОС. Напомню, что под капотом этих пакетов скрипты #PowerShell, и у моего CheckBootSpeed тоже.
👉 Извлечь скрипты очень просто - запустите пакет и заберите из %windir%\temp свежую папку с именем SDIAG_<GUID>.
Ориентироваться в назначении скриптов можно по префиксам имен файла: TS - troubleshoot, RS - resolve, VF - verify. Остальное не помню, но не суть. В одном из скриптов мое внимание привлек вызов функции Arm-Zip, которая архивирует содержимое указанной папки. Она вызывает другую функцию - Get-ARMCompression, которая помимо прочего задействует пространство имен .NET System.IO.Compression. См. CL_SetupEnv.ps1.
Функцию Arm-Zip в коде сопровождает комментарий: Works on all Win 8 including ARM. Очевидно, дополнительный челлендж породила Windows RT, в девичестве Windows on ARM, WOA. Я не пытался сравнивать скрипты диагностики с пакетом Windows 7. Но в Windows 8 их точно пришлось допиливать для архивации собранных данных ✌️