Какие хорошие практики существуют для удалённого WindowsUpdate?
Пытаюсь использовать PSWindowsUpdate модуль. Но с ним как-то тяжело, то прав не хватает и хочет system, то еще что. я так понял, надо Invoke-WUInstall, чтобы задача в шедулере создалась, но чего-то не создаётся и проверить статус установщика - тоже denied.
Локальный скрипт тоже шалит, нормально работает только Get-WUList.
У меня при наличии локальных админских прав проблем не было с этим модулем.
А вообще все модули примерно одинаково работают. Там внутри в конечном итоге сздание объектов dcom, install в нём может работать только при локальном создании объекта - поэтому приходится через шедулер запускать. Иначе double hop классический получается
Не увидел там DCOM, в частности Microsoft.Update.SystemInfo вполне себе реальный класс.
Нда, скачал исходники отсюда https://gallery.technet.microsoft.com/scriptcenter...
а он уже dll запилил вместо скриптов, соответственно, исходники не актуальны.
функций много добавлено, но, например, получить Get-WURebootStatus также нельзя, нет creds.
Invoke-Command -ComputerName -cred... понятно не спасает.
я понимаю, почему Ms так сделала, но проблему решать надо.
у встроенного WindowsUpdateProvider на Win2019 нормально, а на последней Win10 выдаёт:
от компа я сейчас далеко и рабочего скрипта поазать не могу, но он есть :)
Там именно через создание объекта new-object -dcom ....
Работало, начиная с 2008 сервера
MaxKozlov, но New-Object не принимает параметр -DCOM :)
не вчитывался по ссылке, то там тоже CLSCTX_INPROC_SERVER.
сейчас попробую встроенный WindowsUpdateProvider использовать.
только вот на Win10 не работает, обычно наоборот.
Btw судя по ошибке это что-то может работать начиная с 10-ки. Wmi к windows update появился только в ней. Так что проблема может крыться в разнице версий.
А reboot status это просто несколько ключиков в реестре - примеры в инете есть.
Видимо чел перешел на десяточного провайдера и поломал совместимость
inproc_server в COM - это локальная dll. она может означать как прокси в out process так и локально,
насколько я помню из начала 00-х годов.
тем не менее тема не раскрыта. обновлений нет. и вот "Windows Admin Center" не помошает со своим экспортом в PS.
когда я ковыряся в теме был уверен что там именно dcom который как dcom не работает. Только локальная активация :) но я в этот скрипт не лазил с конца 14 года. Он просто работает. Правда предъявить его к осмотру раньше 20 числа не смогу. Но идея там примерно та же что и в pswindowsupdate когда он был на скриптах. Сначала запос обновлений через windows.update.searcher, а потом установка через шедулер и вызов windows.update.session
MaxKozlov, я вот сделал свою обёртку над PSWindowsUpdate. Возиться руками с COM в Powershell прям не очень улыбало, и так много времени потратил. Это же долгие, блин, операции.
Я бы выложил его здесь, если будет возможность - посмотришь?
Вот смотрю сейчас на установку mssql. Всё сделал нормально, но, блин, pipeline PS по вызову иногда получает boolean, как надо, а иногда массив, и не могу понять, кто еще в pipeline пишет, кроме моего return. Везде вроде присвоение переменных или Out-Null. На мой взгляд, это вот архитектурное упущение в PS. Не поймешь что на выходе. Да, я знаю, об указание типа выходных данных в заголовке. Это работает, если конвейер напихал туда разных значений? или только контроль или что.
Завтра-послезавтра только.
типом выходных данных так и не приучил себя пользоваться, сейчас не помню, но по-моему это только хинт
Встречал где-то скрипт который чекает кто гадит в пайплайн, но не помню названия. Вроде через trace-command работал. Можно попробовать самому этой же командой затестить. А что именно возвращает лишнее? По тому что вернуло нельзя опрелелить виновника?
сервак уже давно доступен, но она не отдаёт управление. Ошибка после таймаута (60 на 60 это час ждать!).
написал свой Test-ComputerAccess.
это нормально?
таймаут там не с векундах?
Вариант -for powershell ждет доступности через test-wsman насколько я помню.
Может что-то не так с credentials? как именно доступен сервер? Может winrm сильно поздно стартует ?
Можно в отдельном окошке тестить тот же сервер через test-wsman чтобы понять в чем проблема
MaxKozlov, во время затянувшейся команды ребут, он вот доступен так:
Test-WSMan -ComputerName 192.168.192.90
или так с корректными версиями
Test-WSMan -ComputerName 192.168.192.90 -Credential $c -Authentication default
Посмотрел на Reboot-Computer еще раз и добавил -Protocol WSMan -WsmanAuthentication Default
Пока не тестил это. Долго всё.
И то что вот работало без этого. А иногда не работает, когда долго апдейты ставятся.
Вот это скачивается долго: KB4565349 - 15GB
Я скачал это обновление, но оно всего 346Mb. Я слышал, что WindowsUpdate изменил схему апдейтов.
Типа сама определяет необходимость того или иного.
Т.е. если установке Windows подсовывать апдейты, то нужно все камулятивные апдейты с даты выпуска используемого образа?
Кумулятивные на то и кумулятивные что включают в себя предыдущие. А встроенный в wu клиента поиск сам знает что качать - сам находит последнюю версию и качает
MaxKozlov, не я придумал. Get-WindowsUpdate выдаёт такой список:
KB4462930 21MB Update for Adobe Flash Player for Windows Server 2019 (1809) for x64-base...
KB890830 30MB Средство удаления вредоносных программ для платформы x64: v5.82 (KB890830)
KB4494174 2MB Обновление для Windows Server 2019 для систем на базе процессоров x64 (KB...
KB4561600 21MB Обновление системы безопасности для Adobe Flash Player for Windows Server...
KB4570505 75MB 2020-08 Накопительное обновление .NET Framework 3.5, 4.7.2 и 4.8 для Wind...
KB2267602 110MB Обновление механизма обнаружения угроз для Microsoft Defender Antivirus -...
KB4565349 15GB Накопительное обновление для Windows Server 2019 (1809) для систем на баз...
сейчас включил некоторые обновления в формирование образа, посмотрим что он захочет после чистой установки.
ещё вот у Invoke-Command пропадает связь с целевым хостом при длительных операциях:
WARNING: The network connection to 192.168.192.90 has been interrupted. Attempting to reconnect for up to 4 minutes...
WARNING: Attempting to reconnect to 192.168.192.90 ...
WARNING: The network connection to 192.168.192.90 has been restored.
MaxKozlov, сократил список необходимых обновлений до:
KB890830 30MB Средство удаления вредоносных программ для платформы x64: v5.82 (KB890830)
KB2267602 112MB Обновление механизма обнаружения угроз для Microsoft Defender Antivirus -...
дело пошло веселее.
wim дольше формируется из-за обновлений, но предполагается, что он надолго формируется.
а вот установка mssql2019 у меня проходит только при открытой консоли пользователя.
т.е. сначала RDP подключается, потом terminate процессу, потом ставим sql под этим юзером.
через монтирование диска и запуск setup.exe с файлом ответов.
если нет залогиненного юзера, то, смотрел в логах sql, кому-то не хватает разрешений.
нет такого опыта?
MaxKozlov, выяснил, что setup mssql возвращает false, когда настройки OOBE не прошли свой цикл, после чистой установки или значимого обновления. т.е. надо просто открыть rdp-сессию на некоторое время и можно делать logoff. минуты вроде хватает, но тонкая вещь.
потом можно удалённо Invoke вызывать на установку. я его не интегрирую в образ, не хочется ловить проблемы с переименованием машины, пользователями и как sql к этому отнесётся. у ms есть какие-то доки на счёт sysprep для sql, но усложнять пока не хочу, долго на одном и том же сижу.
сейчас на Xeon схему хочу провернуть по установке с нуля.