Обновлённый Select-String


После долгой эпопеи (это тема для отдельного поста, но история ещё не закончилась) командлет Select-String получил новый параметр Culture.

По умолчанию Select-String использует значение CurrentCulture. Это подразумевает преобразования текста в соответствии с правилами текущего языка сессии. Что если нужно выполнить поиск в файле с другим языком? Ранее у нас не было выбора. Теперь можно указать конкретный язык.

Но не только. Языковые преобразования замедляют поиск. Многие утилиты предлагают самый быстрый вариант поиска — двоичный. Теперь это возможно в Select-String! Укажите параметр Culture со значением Ordinal. Попробуйте выполнить поиск в большом лог файле, и вы убедитесь, что это быстрее.

Помимо это теперь Select-String умеет выделять цветом найденные элементы в отображаемой строке. Это включено по умолчанию. Отключить можно параметром NoEmphasis.

Наступают последние дни когда можно внести изменения в PowerShell Core перед выходом релиза 7.0. Пробуйте последние предварительные сборки и пишите замечания.

Установка .Net Framework 3.5 на Windows 10


Собственно речь об установке .Net Framework 3.5 на корпоративные компьютеры Windows 10 с помощью SCCM.

Изначально .Net Framework 3.5 на Windows 10 отключен, а приложений его использующих ещё полно, и время от времени пользователям нужно установить этот пакет. Желательно удаленно и желательно в фоновом режиме.

Для этого потребуется ISO файл с Windows 10 нужной версии/редакции.

При тестировании выяснилась засада. Если групповыми политиками настроен WSUS, то большинство команд установки компонент будут делать запрос на WSUS, и результате получаем ошибку установки. В большинстве случаев рекомендуют временно отключить WSUS в реестре.

Оказывается не всё так плохо. Есть команда которая позволяет установить нужный компонент в фоне без обращений куда бы то ни было.

Там образом, берем диск ISO, находим файл microsoft-windows-netfx3-ondemand-package~31bf3856ad364e35~amd64~~.cab с нужным компонентом, копируем в папку, для которой создаем Application с командой:

dism /online /enable-feature /featurename:NetFX3 /all /Source:.\ /LimitAccess

Параметры All и LimitAccess отключают проверки и попытки обращения в Интернет.

Вместо параметра Enable-Feature можно использовать параметер Add-Package, особенно если требуется импортировать пакет в образ для разливки системы.

Лог установки C:\Windows\Logs\DISM\dism.log

Полезные ссылки:

1. https://blogs.technet.microsoft.com/mniehaus/2015/08/31/adding-features-including-net-3-5-to-windows-10/

2. https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/deploy-net-framework-35-by-using-deployment-image-servicing-and-management—dism

Медленное подключение MMC Computer Management к удаленным компьютерам


В SCCM консоле мы активно используем Recast RCT (Right Click Tools). В частности запускаем оснастку MMC Computer Management. В один прекрасный момент эта оснастка стала подвисать при запуске на окне с ползунком прогресса, да ещё иной раз аварийно завершаться, если не дождаться завершения подключения.

Команда netstat показала SYN_SENT. Иначе говоря на целевых компьютерах фаервол что-то блокировал. Аудит правил фаервола ничего не дал: все правила удаленного управления были на месте.

С коллегой провели некоторые изыскания. Просто запустили mmc.exe и перебирали все оснастки, которые подгружаются в Computer Management. Обнаружили, что проблема есть с двумя из них: Performance и Windows Backup. Удивительно, что в фаерволе нет стандартных правил для них.

Существует групповая политика, которая позволяет управлять (включать и запрещать) оснастками MMC. Мы попытались выключить эти две оснастки, которыми не пользовались. Оказалось, что в политике нет варианта для Windows Backup.

Решением стало добавление разрешающих правил в фаервол для двух процессов plasrv.exe и wbadmin.exe. (Найти их помогла всё та же утилита netstat -ano)

Как только политика с правилами фаервола применилась к компьютерам, оснастка Computer Management стала снова быстро подключаться.

Почему мой Windows 10 загружается так долго?


Давно руки не доходили проанализировать загрузку корпоративных систем, и вот это случилось.

Есть давний инструмент Windows Performance Toolkit, который следует регулярно применять в корпоративной сети — рекомендую.

Собственно проблемы медленной загрузки можно разделить на два вида — общие (для всех корпоративных компьютеров из-за использования общих шаблонов конфигурирования) и частные (которые возникают только на отдельных компьютерах из-за их специфики). Вот примеры.

При анализе трассировки загрузки Windows 10 была обнаружена общая проблема: сервис «Служба Office Нажми и Работай» при запуске пытается сделать сетевой запрос, который тормозит. По всей видимости это запрос в Облако, а так как корпоративная сеть закрыта фаерволом, то неудивительно, что запрос тормозит и замедляет старт службы. Собственно облачные сервисы не используются, поэтому хорошо бы от этого избавиться. После перевода службы в Delayed Start загрузка системы улучшается. (Не понятны последствия для самого Office, но, как говорится, жизнь покажет, точнее, протестируем.)

Второй пример частный. При анализе трассировки загрузки системы было замечено замедление при вызове некой функции, в имени которой присутсвует Home. Имена соседних функций также информативны и говорят о сетевом запросе — очевидно проблема с монтированием сетевой домашней папки в виде диска. В свойствах доменной учётной записи на закладке Profile действительно есть эти настройки. Только указан старый, уже неиспользуемый, сервер! Так как пользователь никогда не пользовался домашней папкой, то никто не знал об ошибке конфигурации. После удаления этой настройки время загрзки улучшилось на 17 секунд, а вместе с первым изменением более чем на 20 секунд.

Общее впечатление после анализа процесса загрузки — Windows 10 поприятнее Windows 7. Я ожидал худшего на старом железе, но ожидания не оправдались.

Хотя загрузка теперь в пределах нормы (100 секунд) для корпоративной системы (с кучей групповых политик и злобным антивирусом на борту, тем не менее вижу ещё потенциал для ускорения загрузки. Возможно удастся найти другие узкие и проблемные места в загрузке из-за «ошибок» в корпоративных шаблонах конфигураций.

Опыт перехода на Windows 10


Этот 2019 год последний в жизненном цикле Windows 7. Это ставит задачу перехода на более новую версию Windows 10 (1809/Ent 2019).

Самый главный опыт — систему надо ставить с нуля. Почему?

  1. Официально обновление поверх (in-place upgrade) не поддерживается.
  2. Существует недокументированный способ, как это обойти.
  3. Этим способом лучше не мигрировать, так как будут проблемы на каждом шагу:
    • Часто нужны новые версии драйверов для сетевых и видео карт.
    • Нужно предварительно снести антивирус. Манипуляции с KES 10 и 11 не дали надежного результата. Учтите, что KES 11 Device Control может работать на Windows 10 немного не так как раньше: у нас отвалились некоторые USB принтеры — заработали после правки настроек Device Control.
    • Нужно обязательно удалить App-V и TMG клиент до обновления.
    • Не все приложения будут нормально работать — их надо выявить и также удалить до обновления системы. Скорее всего само приложение надо обновить до версии, которое работает на Windows 10. Например, Crypto Pro 3 -> 4.
    • В Windows 7 версия профиля 3. На Windows 10 1809 — уже 6. Не факт, что профили пользователей смигрируется правильно и без потерь.
    • Windows 7 очень надежная система и скорее всего работает на конкретных компьютерах много лет. Это означает, что на диске скопилось много мусора. Установка поверх не удалит его полностью. Например, давно ненужные установленные программы и их рабочие файлы. Древние архивы и прочие «запасы» в профилях пользователей.

Установка новой системы также хороший повод протестировать и обновить версии других приложений. Например, перейти на Office 2016 или 2019 — про это будет отдельный пост.

Если у вас типовая конфигурация, то вы можете отладить обновление поверх. Но если у вас зоопарк оборудования и приложений, то вы съэкономите массу времени, если будете ставить новые системы с нуля.

Следующая версия PowerShell Core — PowerShell 7.0


Команда Microsoft официально объявила, что следующая версия PowerShell Core выйдет как PowerShell 7.0.

Основной посыл в том, что с переходом на .Net Core 3.0 пользователи получат версию почти на 90% совместимую с Windows PowerShell.

Имя PowerShell 7.0 без Core также призвано демонстрировать этот факт.

Ещё один важный момент: теперь выпуски основных версий будут следовать выпускам .Net Core. Это означает, что появятся LTS версии с увеличенным временем поддержки. Это будет стимулировать использование PowerShell Core в других продуктах. По-прежнему каждый месяц будут выходить предварительные версии для тестирования исправлений и новых функций.

Кроме этого PowerShell 7.0 в скором времени будет добавлено в Windows 10 как дополнительный компонент.

Настройка Start Layout в Windows 10


Теперь мы можем централизованно настраивать Start Layout для корпоративных пользователей.

Описано в блоге https://blogs.technet.microsoft.com/deploymentguys/2016/03/07/windows-10-start-layout-customization/

Документация https://docs.microsoft.com/en-us/windows/configuration/customize-and-export-start-layout

По поводу DesktopApplicationLinkPath — это работает, но сам файл lnk должен быть в папке меню, например, %ALLUSERPROFILE%\Microsoft\Windows\Start Menu\Programs