Я долго искал и еще не нашел ответа на свой вопрос о том, как именно обновление Windows работает с Server Core 2012. У меня есть пара контроллеров домена, которые я только что подключил и решил заменить их на ядро сервера. Я нашел две вещи: sconfig
но получить следующее сообщение об ошибке, когда он
♀Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.
Inspecting system...
===============================================================================
Server Configuration
===============================================================================
1) Domain/Workgroup: Domain: mydomain
2) Computer Name: mydc
3) Add Local Administrator
4) Configure Remote Management Enabled
5) Windows Update Settings: Automatic
6) Download and Install Updates
7) Remote Desktop: Disabled
8) Network Settings
9) Date and Time
10) Help improve the product with CEIP Not participating
11) Windows Activation
12) Log Off User
13) Restart Server
C:\Windows\System32\en-US\sconfig.vbs(326, 1) Microsoft VBScript runtime error: Input past end of file
14) Shut Down Server
15) Exit to Command Line
Enter number to select an option:
Я также нашел несколько ссылок, в которых говорится об использовании Cscript, но я также получаю сообщение об ошибке при запуске. Например:
[mydc]: PS C:\Users\JohnDoe\Documents> Cscript scregedit.wsf /AU /v
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.
Input Error: Can not find script file "C:\Users\JohnDoe\Documents\scregedit.wsf".
Итак, как мне убедиться, что автоматические обновления работают? Есть ли способ обновить вручную?
Я не знаю, почему sconfig имеет эту ошибку на вашем сервере.
scregedit.wsf находится в system32:
cd c:\windows\system32
Cscript scregedit.wsf /AU /v 4
включит автоматические обновления.
Вы также можете изменить реестр напрямую, ключ находится по адресу: HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ WindowsUpdate \ Auto Update
Существует значение DWORD с именем 'AUOptions'
Значение 1 отключает обновления, значение 4 загружает и устанавливает их автоматически. Значения 2 и 3 уведомляют пользователя через область уведомлений панели задач, которой нет в Core, поэтому не используйте их.
Я устанавливаю обновления вручную, потому что мне нужно иметь возможность решать, когда произойдет перезагрузка.
Существуют различные сторонние инструменты, такие как 'Основной конфигуратор', которые позволяют выполнять обновления вручную.
В настоящее время я использую: 'WUA_SearchDownloadInstall.vbs', небольшой скрипт от Microsoft
Теперь есть хороший модуль PowerShell, который дает вам больше контроля над устанавливаемыми обновлениями:
Модуль Windows Update PowerShell
После того как вы скопировали файлы в папку по любому пути, указанному в% PSModulePath%, вы можете использовать:
Get-WUlist
Вы можете использовать обычный конвейер PowerShell:
Get-WUList | format-list -property Title, Description
Чтобы получить список всех доступных обновлений. Затем вы можете установить отдельные обновления:
Get-WUInstall -KBArticleID KB2868623
или без подсказок:
Get-WUInstall -KBArticleID KB2849470 -AcceptAll -IgnoreReboot
Вы можете установить только определенные обновления для Windows:
Get-WUInstall -Category "Security Updates" -ListOnly
Показать историю обновлений:
Get-WUHistory | fl
Проверьте, нужна ли вам перезагрузка:
Get-WURebootStatus
Кажется, это также работает на удаленных машинах, но я еще не проверял это.
Я знаю, что это старый пост, но подумал, что все равно отправлю здесь ответ. Причина ошибки ввода заключается в том, что CScript, имя скрипта и параметры должны быть разделены. После некоторой борьбы с этим я обнаружил, что это работает при запуске этого внутри скрипта. Invoke-Command -Scriptblock { & 'CScript' 'C:\windows\system32\SCRegedit.wsf' "/AU" "/v"
Вы не указали, в каком контексте вы запускаете sconfig.cmd, но это происходит, когда вы запускаете этот инструмент из удаленного сеанса PowerShell. Я успешно запустил его только при подключении по RDP.