Установка Remote Server Administration Tools (RSAT) в Windows 10 v1903 в Offline-режиме

Offline Install Remote Server Administration Tools RSAT in Windows 10 v1903Ранее мы уже писали об особенностях установки пакета Remote Server Administration Tools (RSAT) в Windows 10. Но время идёт и новые релизы Windows 10 вносят новые правила работы с этим пакетом. В этой заметке мы поговорим об особенностях автономной установки RSAT в актуальной версии Windows 10 1903.

Графический интерфейс "Параметры Windows" и UAC

В рассматриваемой нами версии Windows 10 активацию компонент RSAT можно выполнить через графический интерфейс Windows, пройдя последовательно в Параметры Windows > Приложения > Дополнительные возможности > Добавить компонент

Windows 10 1903 Add Optional Feature

Однако, если с помощью этого графического интерфейса мы попытаемся выполнить добавление компонент на системе, подключенной к локальному серверу WSUS/SCCM SUP, то может получиться так, что мы даже не сможем получить перечень доступных к установке компонент.

Windows 10 Feature Install and UAC

Эта проблема будет воспроизводится в том случае, если текущий пользователь системы не имеет прав локального администратора и доступ к интерфейсу добавления компонент выполняется с запросом повышения привилегий UAC. При этом, если войти в систему интерактивно с правами администратора, то список компонент в графическом интерфейсе мы всё же сможем увидеть.

Компоненты RSAT и PowerShell

В качестве альтернативного варианта получения списка опциональных компонент Windows можно использовать оболочку PowerShell, запущенную с правами администратора. Для получения компонент, относящихся к пакету RSAT можно выполнить команду:

Get-WindowsCapability -Name RSAT* -Online | Select-Object -Property State,Name,DisplayName | Format-Table -AutoSize

Get-WindowsCapability RSAT

Установку той или иной компоненты можно выполнить командой типа:

Add-WindowsCapability -Online -Name Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0
Feature On Demand и проблема Offline-клиентов

Теперь нам понятно, что графический интерфейс Windows 10 1903 работает с UAC криво, а в PowerShell всё в этом плане хорошо. Однако, безотносительно способа установки, в том случае, если компьютер настроен на использование WSUS/SUP и не имеет прямого доступа в интернет, при попытке установки выбранной компоненты мы можем получить ошибку 0x800f0954.

Add-WindowsCapability Error 0x800f0954

И ошибка эта будет воспроизводиться как при использовании PowerShell, так и при использовании графического интерфейса. Правда, в графическом интерфейсе, опять же, это может быть не так очевидно.

Как я понял, связано это с тем, что для установки опциональных компонент требуется наличие доступа к комплекту пакетов установки Feature On Demand (FOD) для нашей "модной" версии Windows 1903. Именно в этот комплект включаются компоненты RSAT, начиная с обновления Windows 10 1809 от Октября 2018 года. Об этом, в частности, гласит примечание на странице загрузки Remote Server Administration Tools for Windows 10

Интересно то, что на этой же веб-странице имеется сноска о том, что пользователям, использующим WSUS/SUP, и получающим выше обозначенную ошибку 0x800f0954, для возможности установки компонент RSAT придётся настраивать прямой доступ на Windows Update, либо использовать метод с сетевым каталогом.

Known issues affecting various RSAT versions:

Issue: RSAT FOD installation fails with error code 0x800f0954
Impact: RSAT FODs on Windows 10 1809 (October 2018 Update) in WSUS/SCCM environments
Resolution: To install FODs on a domain-joined PC which receives updates through WSUS or SCCM, you will need to change a Group Policy setting to enable downloading FODs directly from Windows Update or a local share.

И в этой ситуации администраторы используют разные пути. Некоторые идут по пути наименьшего сопротивления, не заморачиваясь при этом вопросами удобства и безопасности, и отключают на время установки RSAT нацеливание клиента на WSUS с последующей организацией прямого доступа к Windows Update.

На мой взгляд, этот метод "так себе", так как далеко не всегда и не во всех ситуациях возможно, или даже временно допустимо, обеспечивать прямой доступ на внешние интернет-узлы. К тому же решение с временной правкой реестра и последующим перезапуском службы клиента Windows Update назвать удобным язык не повернётся. При этом ведь ещё нужно помнить про том, что нигде в групповых политиках не должно быть настроено явных запретов на до-загрузку контента Windows c Windows Update.

Feature On Demand и WSUS

А что же нам в этой ситуации может предложить наш локальный источник обновлений - WSUS? Если заглянуть в свойствах сервера WSUS в перечень продуктов, относящихся к Windows 10 (…интересно, в Microsoft сами ориентируются в этом списке?…), то мы увидим такую интересную позицию, как Windows 10 Feature On Demand.

Windows 10 Feature On Demand on WSUS

Не найдя нигде в открытых источниках вменяемого развёрнутого описания этой позиции (…впрочем, как и многих других…) мы решили включить её и проверить, что она нам даст. По итогу могу сказать, что среди метаданных о более, чем тысячи обновлений, прилетевших после синхронизации WSUS с Windows Update, я увидел только некоторые компоненты FOD, большинство из которых применимы только для старых версий Windows 10. Ну и в придачу мы получили целый ворох языковых пакетов на всех мыслимых и немыслимых языках, невзирая на то, что в настройках сервера WSUS у нас включены только английский и русский языки. В общем и целом эта позиция на WSUS для нас оказалась бесполезной и даже вредительской.

Раздача Feature On Demand для Offline-клиентов

В результате проведённых экспериментов стало очевидно, что единственным приемлемым в нашей ситуации вариантом, позволяющим выполнять Offline-установку RSAT, является вариант с развёртыванием специального сетевого каталога с компонентами Feature On Demand с нацеливанием клиентов на этот каталог через групповые политики.

Для начала нам потребуется получить образы дисков с компонентами FOD для нашей версии Windows 10. Загрузить эти образы можно вручную с сайта Volume Licensing Service Center (VLSC)

Windows 10 1903 Feature On Demand Images

Создаём на файловом сервере общедоступный сетевой ресурс для клиентских систем 64-bit и распаковываем в него всё содержимое образов SW_DVD9_NTRL_Win_10_1903_64Bit_MultiLang_FOD_.ISO. Рядом создаём аналогичный ресурс для систем 32-bit и распаковываем туда образы SW_DVD9_NTRL_Win_10_1903_W32_MultiLang_FOD_.ISO.

Распакованный контент будет представлять из себя множество *.cab файлов, среди которых есть и интересующие нас опциональные компоненты RSAT.

Теперь на любом Offline-клиенте c Windows 10 1903 мы можем попытаться выполнить установку компонент RSAT c помощью PowerShell, указывая в качестве источника получения подготовленный сетевой каталог:

Add-WindowsCapability -Online -Name Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0 -LimitAccess -Source \\holding.com\Installers\Windows-Feature-On-Demand\Win10-1903\64-bit

Add-WindowsCapability from Share

Имейте в виду, что командлет Add-WindowsCapability работает довольно специфично. То есть он может отработать без ошибки, но если в указанном источнике не будут найдены файлы, подходящие для данной системы, никакой установки на самом деле не произойдёт… Разумеется, "это не баг, а фича"… Поэтому после выполнения командлета установки всех нужных компонент, лучше повторно проверять установленные компоненты:

Get-WindowsCapability -Name RSAT* -Online | Select-Object -Property State,DisplayName | Where {$_.State -eq "Installed"} | Format-Table -AutoSize

PowerShell Get-WindowsCapability where Installed

После этого установленные компоненты RSAT можно будет видеть в уже "горячо полюбившейся" нам графической оболочке Windows 10 1903 в ранее упомянутом перечне дополнительных компонент Windows

Windows 10 Uninstall FOD in UI

И отсюда же их можно будет удалить при необходимости.

Таким образом все администраторы в организации смогут с помощью PowerShell вручную установить нужные им компоненты RSAT на свои системы Windows 10 1903, не имея прямого доступа в интернет. Однако Offline-установку можно сделать ещё удобней, если дополнительно настроить специальный параметр групповой политики, указывающий клиентам расположение сетевого каталога с компонентами FOD. Описан этот параметр GPO, например, в документе: How to make Features on Demand and language packs available when you're using WSUS/SCCM.

Переходим в консоль управления групповыми политиками и в разделе политик Administrative Templates > System  находим параметр "Specify settings for optional component installation and component repair"

Group Policy - Specify settings for optional component installation and component repair

Включаем этот параметр и указываем путь к сетевому каталогу с компонентами FOD в поле "Alternate source file path".

Этот параметр групповой политики фактически принесёт на клиентские системы параметр реестра "LocalSourcePath" в ключе HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Servicing

LocalSourcePath in Windows 10 Registry

После этого Offline-установка компонент FOD станет доступна и через графический интерфейс Windows без использования танцев с PowerShell

Install FOD in Windows 10 1903 in GUI

Однако при этом стоит помнить про ранее обозначенный нюанс с пустым списком компонент в случае использования графического интерфейса в связке с UAC. То есть выполнять установку компонент FOD через графический интерфейс окна "Параметры Windows" нужно только при интерактивном входе в систему из под административной учётной записи. Если по какой-то причине заходить в систему администратором интерактивно нет желания/возможности, то можно использовать выше описанный метод с установкой через PowerShell.

При этом опять же стоит отметить то, что приятным плюсом использования настройки пути к компонентам FOD через групповую политику станет и то, что теперь при использовании PowerShell не потребуется явно указывать путь для установки нужных компонент:

PowerShell install FOD in Windows 10

И вроде бы теперь всё здорово, результат достигнут, то есть Offline-установка работает и через графический интерфейс и через PowerShell. Но дивные "фичи" на этом не кончаются.

Обработка "LocalSourcePath" с несколькими путями

Ещё одной странной штукой, которая была обнаружена при работе с выше обозначенным параметром групповой политики, это то, что, судя по описанию в GPO, значение опции "Alternate source file path" может принимать несколько путей с разделителем в виде точки с запятой. Однако практические эксперименты с Windows 10 1903 показали, что при считывании значения "LocalSourcePath" из реестра система заглядывает только в первый по счёту каталог (указанный до точки с запятой), а остальные игнорирует. Такое поведение вполне вписывается в рамки обработки значения ключа -Source командлета Add-Windows​Capability, в описании которого есть соответствующее примечание

If you specify multiple Source arguments, the files are gathered from the first location where they are found and the rest of the locations are ignored.

Вариантом выхода из этой ситуации может быть отказ от использования классического параметра из административных шаблонов GPO и настройка пути в реестре средствами Group Policy Preferences (GPP) с использованием таргетинга по версии и разрядности клиентской операционной системы.

Group Policy Preferences for FOD Source in Local Network

По крайней мере именно на таком варианте мы и остановились, как на наиболее гибком и работоспособном.

Финиш

В итоге квест под названием "Выполнить Offline-установку RSAT в Windows 10 и не слететь с катушек" пройден, и теперь все административные пользователи, работающие на новой Windows 10 1903, могут устанавливать компоненты RSAT, как через графический интерфейс Windows, так и через PowerShell фактически в Offline-режиме и без дополнительных сложностей и манипуляций по аналогии с Online-клиентами.

PS: Никогда ещё установка RSAT в Windows у меня не была такой увлекательной и долгой. Чем больше смотрю на новые релизы Windows 10, тем становится интересней, во что же вся эта тенденция в итоге выльется. Коллега предположил, что в итоге получится, что-то вроде ранних выпусков Mandriva Linux – жутко красиво, но пользоваться этим без слёз невозможно Smile

Всего комментариев: 6 Комментировать

  1. Андрей /

    А вы пробовали прочитать журналы WSUS на клиентских машинах.
    Для машин без доступа в интернет, это ооочень увлекательное занятие
    https://blogs.technet.microsoft.com/charlesa_us/2015/08/06/windows-10-windowsupdate-log-and-how-to-view-it-with-powershell-or-tracefmt-exe/

    1. Алексей Максимов / Автор записи

      Пробовали. Выполняли на Windows 10 v1903 один командлет без параметров: Get-WindowsUpdateLog. Вроде бы даже прав администратора при этом не требовалось. В результате на рабочий стол вываливался вполне читаемый WindowsUpdate.log. Могу только предположить, что такой сложной процедура была в ранних версиях Windows 10.

      1. Андрей /

        Это работает на чистой ОС
        Попробуйте поставить LCU. Проблема в том, что меняются символы отладки.
        И после установки LCU нужно скачать новые иначе файл лога не распакуется, а offline версии больше нет.
        "We are no longer publishing the offline symbol packages for Windows.
        With the cadence that we release updates for Windows, the Windows debugging symbols we publish via the packages on this page are quickly made out of date. We have made significant improvements to the online Microsoft Symbol Server by moving this to be an Azure-based symbol store, and symbols for all Windows versions and updates are available there. You can find more about this in this blog entry."
        https://docs.microsoft.com/ru-ru/windows-hardware/drivers/debugger/debugger-download-symbols

        Приходиться применять костыли
        https://docs.microsoft.com/ru-ru/windows-hardware/drivers/debugger/using-a-manifest-file-with-symchk

  2. Mi G /

    Попробую сократить длиннопост:
    Get-WindowsCapability -Online|?{$_.name -like '*rsat*'}|Add-WindowsCapability -Online -LimitAccess -Source "E:\en_windows_10_features_on_demand_part_1_version_1809_updated_sept_2018_x64_dvd_a68fa301\"

    Всё.

  3. Роман /

    Оно того стоило столько графоманства ? )

    Выключаем временно WSUS, ставим rsat:
    $val = Get-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name "UseWUServer" | select -ExpandProperty UseWUServer
    Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name "UseWUServer" -Value 0
    Restart-Service wuauserv
    Get-WindowsCapability -Name RSAT* -Online | Add-WindowsCapability –Online

    Включаем обратно:
    Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name "UseWUServer" -Value $val
    Restart-Service wuauserv

  4. Сергей /

    Можно просто установить KB2693643 - Win10 Средства удаленного администрирования сервера. У меня на Win10 1903 всё работает, как надо.

Добавить комментарий