UncleFather » 28 дек 2016 08:12, Ср
Проблема:
Клонированные компьютеры отображаются на сервере WSUS по очереди как один компьютер.
При этом, естественно, меняется имя отображаемого ПК и его данные.
Объяснение:
Компьютеры клонировались без предварительной подготовки утилитой Sysprep, вследствие чего идентификаторы WSUS клиента на всех этих компьютерах были одинаковые.
Решение:
На всех клонированных компьютерах необходимо удалить идентификатор WSUS клиента. Он вновь создастся автоматически при очередном обновлении Windows, но теперь уже уникальный для каждого компьютера.
Для этого на каждом клонированном ПК нужно выполнить скрипт:
Код: Выделить всё
rem === Останавливаем службу Windows Update
net stop wuauserv
rem === Удаляем идентификационные данные клиента Windows Update
reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate /v PingID /f
reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate /v AccountDomainSid /f
reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate /v SusClientId /f
reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate /v SusClientIDValidation /f
rem === Удаляем файловый кэш клиента Windows Update
del /f /s /q %WinDir%\SoftwareDistribution\*
rem === Запускаем службу Windows Update
net start wuauserv
rem === Вызываем форсированную перерегистрацию клиента Windows Update
wuauclt.exe /resetauthorization /detectnow
Скрипт в архиве качаем здесь:
Одновременно с этим, на сервере WSUS можно (но не обязательно) удалить тот компьютер из клонированных, который отображается в данный момент, а затем выполнить очистку сервера.
Скрипт взят из статьи WSUS и клонированная ОС Windows с сайта техподдержки Microsoft.
Подробнее проблема и ее решение описаны в статье Компьютер под управлением Windows 2000,Windows Server 2003 или Windows XP, настроенный с помощью образа Windows 2000, Windows Server 2003 или Windows XP, не отображается в консоли WSUS (KB903262) на сайте Microsoft.
Дополнение:
В случае, когда имеется несколько компьютеров в домене AD, на которых необходимо изменить идентификаторы WSUS клиента, это действие можно автоматизировать при помощи двух скриптов - cmd и vbs. Например, для списка компьютеров Comp210,Comp215,Comp223,Comp224,Comp225,Comp228,Comp230,Comp233,Comp235,Comp236,Comp237 скрипт будет такой (комментарии в коде):
Код: Выделить всё
REM Отключаем вывод команд на экран
@echo off
REM Устанавливаем значения переменных среды
setlocal ENABLEEXTENSIONS
SetLocal EnableDelayedExpansion
REM Начинаем запись журналов выполнения в отдельных файлах для компьютеров, которые доступны в сети, и для компьютеров, которые недоступны
Echo. >> Unreacheable_PCs.txt
Echo ################################### Starting %Date% %Time% ################################### >> Unreacheable_PCs.txt
Echo. >> Done_PCs.txt
Echo ################################### Starting %Date% %Time% ################################### >> Done_PCs.txt
REM Перебираем все компьютеры из списка
for %%i in (Comp210,Comp215,Comp223,Comp224,Comp225,Comp228,Comp230,Comp233,Comp235,Comp236,Comp237) do (
REM Устанавливаем значение переменной
set CompName=%%i
REM Переходим к блоку списка действий с компьютером
call :WhatToDo
)
REM В конце работы дописываем в файлы журналов сведения об окончании работы скрипта
Echo #################################### Ending %Date% %Time% #################################### >> Unreacheable_PCs.txt
Echo #################################### Ending %Date% %Time% #################################### >> Done_PCs.txt
REM Переходим в конец файла (выход)
goto :eof
REM Начало блока списка действий с компьютером
:WhatToDo
REM Проверяем доступность хоста по сети
ping -n 1 %CompName% | find "TTL="> TmpPng
REM Если хост недоступен
if %errorlevel%==1 (
REM Выводим сообщение и записываем имя недоступного компьютера в журнал
echo %CompName% is unreacheable
Echo %CompName% >> Unreacheable_PCs.txt
) Else (
REM Если хост доступен
REM Выводим сообщение и записываем имя компьютера, с которым работаем в журнал
echo working with %CompName%
echo. >> Done_PCs.txt
REM Записываем в журнал начало блока обработки текущего компьютера с указанием времени
echo ###### Start with %CompName% ###### >> Done_PCs.txt
REM Устанавливаем тип запуска «Службы обновления Windows» в значение «Отключена»
sc \\%CompName% config wuauserv start=disabled >> Done_PCs.txt
REM Устанавливаем тип запуска «Службы фоновой интеллектуальной поддержки (BITS)» в значение «Отключена»
sc \\%CompName% config bits start=disabled >> Done_PCs.txt
REM Останавливаем «Службы фоновой интеллектуальной поддержки (BITS)»
sc \\%CompName% stop bits >> Done_PCs.txt
REM Останавливаем «Службы обновления Windows»
sc \\%CompName% stop wuauserv >> Done_PCs.txt
REM Удаляем ключи реестра, где может содержаться уникальный идентификатор компьютера для служб WindowsUpdate
reg delete \\%CompName%\HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate /v PingID /f >> Done_PCs.txt
reg delete \\%CompName%\HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate /v AccountDomainSid /f >> Done_PCs.txt
reg delete \\%CompName%\HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate /v SusClientId /f >> Done_PCs.txt
reg delete \\%CompName%\HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate /v SusClientIDValidation /f >> Done_PCs.txt
REM Удаляем содержимое папки «SoftwareDistribution»
del /f /s /q \\%CompName%\c$\Windows\SoftwareDistribution\* >> Done_PCs.txt
REM Устанавливаем тип запуска «Службы обновления Windows» в значение «Автоматически»
sc \\%CompName% config wuauserv start=auto >> Done_PCs.txt
REM Устанавливаем тип запуска «Службы фоновой интеллектуальной поддержки (BITS)» в значение «Автоматически»
sc \\%CompName% config bits start=auto >> Done_PCs.txt
REM Запускаем «Службы фоновой интеллектуальной поддержки (BITS)»
sc \\%CompName% start bits >> Done_PCs.txt
REM Запускаем «Службы обновления Windows»
sc \\%CompName% start wuauserv >> Done_PCs.txt
REM Запускаем скрипт на VBS, выполняющий команду «wuauclt.exe /resetauthorization /detectnow» на удаленном компьютере
WUAU_Ini.vbs /CompName:%CompName% >> Done_PCs.txt
REM Записываем в журнал конец блока обработки текущего компьютера с указанием времени
echo ####### End with %CompName% ####### >> Done_PCs.txt
)
goto :eof
EXIT
Код: Выделить всё
compName = Wscript.Arguments.Named.Item("CompName")
Set objProc = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & compName & "\root\cimv2:Win32_Process")
errCode = objProc.Create("wuauclt.exe /resetauthorization /detectnow", null, null, procID)
Порядок запуска:
-
Скачиваем и распаковываем архив в одну папку. Получаем два файла: Reset_WSUS_LAN.bat и WUAU_Ini.vbs;
-
В командном файле Reset_WSUS_LAN.bat изменяем имена в списке компьютеров на имена компьютеров, на которых нужно изменить WSUS ID;
-
Запускаем командный файл Reset_WSUS_LAN.bat.
Архив со скриптами качаем здесь:
Для проверки текущего статуса компьютеров, над которыми были проведены вышеописанные действия, можно выполнить скрипт, который позволяет получить новый идентификатор WSUS этих систем, а так же состояние «Службы фоновой интеллектуальной поддержки (BITS)» и «Службы обновления Windows», и параметры их запуска:
Код: Выделить всё
REM Отключаем вывод команд на экран
@echo off
REM Устанавливаем значения переменных среды
setlocal ENABLEEXTENSIONS
SetLocal EnableDelayedExpansion
REM Перебираем все компьютеры из списка
for %%i in (Comp210,Comp215,Comp223,Comp224,Comp225,Comp228,Comp230,Comp233,Comp235,Comp236,Comp237) do (
REM Устанавливаем значение переменной
set CompName=%%i
REM Переходим к блоку списка действий с компьютером
call :WhatToDo
)
goto :eof
:WhatToDo
REM Проверяем доступность хоста по сети
ping -n 1 %CompName% | find "TTL="> TmpPng
REM Если хост недоступен
if %errorlevel%==1 (
echo %CompName% is unreacheable
) Else (
REM Выводим сообщение и записываем имя компьютера, с которым работаем в журнал
echo working with %CompName%
echo. >> RegWSUS.txt
echo working with %CompName% >> RegWSUS.txt
REM Получаем ключи реестра, где содержится уникальный идентификатор компьютера для служб WindowsUpdate
reg query \\%CompName%\HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate /v SusClientId >> RegWSUS.txt
REM Получаем состояние «Службы обновления Windows»
sc \\%CompName% query wuauserv >> RegWSUS.txt
REM Получаем параметры запуска «Службы обновления Windows»
sc \\%CompName% qc wuauserv >> RegWSUS.txt
REM Получаем состояние «Службы фоновой интеллектуальной поддержки (BITS)»
sc \\%CompName% query bits >> RegWSUS.txt
REM Получаем параметры запуска «Службы фоновой интеллектуальной поддержки (BITS)»
sc \\%CompName% qc bits >> RegWSUS.txt
)
goto :eof
EXIT
Скачать скрипт можно здесь:
[b][size=150]Проблема:[/size][/b]
Клонированные компьютеры отображаются на сервере WSUS по очереди как один компьютер.
При этом, естественно, меняется имя отображаемого ПК и его данные.
[hr][/hr]
[b][size=150]Объяснение:[/size][/b]
Компьютеры клонировались без предварительной подготовки утилитой [b][i]Sysprep[/i][/b], вследствие чего идентификаторы WSUS клиента на всех этих компьютерах были одинаковые.
[hr][/hr]
[b][size=150]Решение:[/size][/b]
На всех клонированных компьютерах необходимо удалить идентификатор WSUS клиента. Он вновь создастся автоматически при очередном обновлении Windows, но теперь уже уникальный для каждого компьютера.
Для этого на каждом клонированном ПК нужно выполнить скрипт:[code]rem === Останавливаем службу Windows Update
net stop wuauserv
rem === Удаляем идентификационные данные клиента Windows Update
reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate /v PingID /f
reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate /v AccountDomainSid /f
reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate /v SusClientId /f
reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate /v SusClientIDValidation /f
rem === Удаляем файловый кэш клиента Windows Update
del /f /s /q %WinDir%\SoftwareDistribution\*
rem === Запускаем службу Windows Update
net start wuauserv
rem === Вызываем форсированную перерегистрацию клиента Windows Update
wuauclt.exe /resetauthorization /detectnow[/code]
Скрипт в архиве качаем здесь:[attachment=2]WSUS_ReRegister.rar[/attachment]
Одновременно с этим, на сервере WSUS можно (но не обязательно) удалить тот компьютер из клонированных, который отображается в данный момент, а затем выполнить очистку сервера.
Скрипт взят из статьи [url=https://social.technet.microsoft.com/Forums/ru-RU/ba606d18-f373-4c6b-abe7-1c795fe97d7e/wsus-windows?forum=wsusru]WSUS и клонированная ОС Windows[/url] с сайта [url=https://technet.microsoft.com/ru-ru/]техподдержки[/url] Microsoft.
Подробнее проблема и ее решение описаны в статье [url=https://support.microsoft.com/ru-ru/kb/903262]Компьютер под управлением Windows 2000,Windows Server 2003 или Windows XP, настроенный с помощью образа Windows 2000, Windows Server 2003 или Windows XP, не отображается в консоли WSUS[/url] (KB903262) на сайте Microsoft.
[hr][/hr]
[b][size=140]Дополнение:[/size][/b]
В случае, когда имеется несколько компьютеров в домене AD, на которых необходимо изменить идентификаторы WSUS клиента, это действие можно автоматизировать при помощи двух скриптов - cmd и vbs. Например, для списка компьютеров [i][b]Comp210,Comp215,Comp223,Comp224,Comp225,Comp228,Comp230,Comp233,Comp235,Comp236,Comp237[/b][/i] скрипт будет такой (комментарии в коде):
[spoiler title=командный файл bat/cmd:][code]REM Отключаем вывод команд на экран
@echo off
REM Устанавливаем значения переменных среды
setlocal ENABLEEXTENSIONS
SetLocal EnableDelayedExpansion
REM Начинаем запись журналов выполнения в отдельных файлах для компьютеров, которые доступны в сети, и для компьютеров, которые недоступны
Echo. >> Unreacheable_PCs.txt
Echo ################################### Starting %Date% %Time% ################################### >> Unreacheable_PCs.txt
Echo. >> Done_PCs.txt
Echo ################################### Starting %Date% %Time% ################################### >> Done_PCs.txt
REM Перебираем все компьютеры из списка
for %%i in (Comp210,Comp215,Comp223,Comp224,Comp225,Comp228,Comp230,Comp233,Comp235,Comp236,Comp237) do (
REM Устанавливаем значение переменной
set CompName=%%i
REM Переходим к блоку списка действий с компьютером
call :WhatToDo
)
REM В конце работы дописываем в файлы журналов сведения об окончании работы скрипта
Echo #################################### Ending %Date% %Time% #################################### >> Unreacheable_PCs.txt
Echo #################################### Ending %Date% %Time% #################################### >> Done_PCs.txt
REM Переходим в конец файла (выход)
goto :eof
REM Начало блока списка действий с компьютером
:WhatToDo
REM Проверяем доступность хоста по сети
ping -n 1 %CompName% | find "TTL="> TmpPng
REM Если хост недоступен
if %errorlevel%==1 (
REM Выводим сообщение и записываем имя недоступного компьютера в журнал
echo %CompName% is unreacheable
Echo %CompName% >> Unreacheable_PCs.txt
) Else (
REM Если хост доступен
REM Выводим сообщение и записываем имя компьютера, с которым работаем в журнал
echo working with %CompName%
echo. >> Done_PCs.txt
REM Записываем в журнал начало блока обработки текущего компьютера с указанием времени
echo ###### Start with %CompName% ###### >> Done_PCs.txt
REM Устанавливаем тип запуска «Службы обновления Windows» в значение «Отключена»
sc \\%CompName% config wuauserv start=disabled >> Done_PCs.txt
REM Устанавливаем тип запуска «Службы фоновой интеллектуальной поддержки (BITS)» в значение «Отключена»
sc \\%CompName% config bits start=disabled >> Done_PCs.txt
REM Останавливаем «Службы фоновой интеллектуальной поддержки (BITS)»
sc \\%CompName% stop bits >> Done_PCs.txt
REM Останавливаем «Службы обновления Windows»
sc \\%CompName% stop wuauserv >> Done_PCs.txt
REM Удаляем ключи реестра, где может содержаться уникальный идентификатор компьютера для служб WindowsUpdate
reg delete \\%CompName%\HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate /v PingID /f >> Done_PCs.txt
reg delete \\%CompName%\HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate /v AccountDomainSid /f >> Done_PCs.txt
reg delete \\%CompName%\HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate /v SusClientId /f >> Done_PCs.txt
reg delete \\%CompName%\HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate /v SusClientIDValidation /f >> Done_PCs.txt
REM Удаляем содержимое папки «SoftwareDistribution»
del /f /s /q \\%CompName%\c$\Windows\SoftwareDistribution\* >> Done_PCs.txt
REM Устанавливаем тип запуска «Службы обновления Windows» в значение «Автоматически»
sc \\%CompName% config wuauserv start=auto >> Done_PCs.txt
REM Устанавливаем тип запуска «Службы фоновой интеллектуальной поддержки (BITS)» в значение «Автоматически»
sc \\%CompName% config bits start=auto >> Done_PCs.txt
REM Запускаем «Службы фоновой интеллектуальной поддержки (BITS)»
sc \\%CompName% start bits >> Done_PCs.txt
REM Запускаем «Службы обновления Windows»
sc \\%CompName% start wuauserv >> Done_PCs.txt
REM Запускаем скрипт на VBS, выполняющий команду «wuauclt.exe /resetauthorization /detectnow» на удаленном компьютере
WUAU_Ini.vbs /CompName:%CompName% >> Done_PCs.txt
REM Записываем в журнал конец блока обработки текущего компьютера с указанием времени
echo ####### End with %CompName% ####### >> Done_PCs.txt
)
goto :eof
EXIT
[/code][/spoiler]
[spoiler title=VBS скрипт:][code]compName = Wscript.Arguments.Named.Item("CompName")
Set objProc = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & compName & "\root\cimv2:Win32_Process")
errCode = objProc.Create("wuauclt.exe /resetauthorization /detectnow", null, null, procID)[/code][/spoiler]
[b][size=120]Порядок запуска:[/size][/b]
[list=1][*] Скачиваем и распаковываем архив в одну папку. Получаем два файла: [b][i]Reset_WSUS_LAN.bat[/i][/b] и [b][i]WUAU_Ini.vbs[/i][/b];
[*] В командном файле [b][i]Reset_WSUS_LAN.bat[/i][/b] изменяем имена в списке компьютеров на имена компьютеров, на которых нужно изменить WSUS ID;
[*] Запускаем командный файл [b][i]Reset_WSUS_LAN.bat[/i][/b].[/list]
Архив со скриптами качаем здесь: [attachment=1]Reset_WSUS_LAN.rar[/attachment]
Для проверки текущего статуса компьютеров, над которыми были проведены вышеописанные действия, можно выполнить скрипт, который позволяет получить новый идентификатор WSUS этих систем, а так же состояние «Службы фоновой интеллектуальной поддержки (BITS)» и «Службы обновления Windows», и параметры их запуска:
[spoiler title=Скрипт проверки:][code]REM Отключаем вывод команд на экран
@echo off
REM Устанавливаем значения переменных среды
setlocal ENABLEEXTENSIONS
SetLocal EnableDelayedExpansion
REM Перебираем все компьютеры из списка
for %%i in (Comp210,Comp215,Comp223,Comp224,Comp225,Comp228,Comp230,Comp233,Comp235,Comp236,Comp237) do (
REM Устанавливаем значение переменной
set CompName=%%i
REM Переходим к блоку списка действий с компьютером
call :WhatToDo
)
goto :eof
:WhatToDo
REM Проверяем доступность хоста по сети
ping -n 1 %CompName% | find "TTL="> TmpPng
REM Если хост недоступен
if %errorlevel%==1 (
echo %CompName% is unreacheable
) Else (
REM Выводим сообщение и записываем имя компьютера, с которым работаем в журнал
echo working with %CompName%
echo. >> RegWSUS.txt
echo working with %CompName% >> RegWSUS.txt
REM Получаем ключи реестра, где содержится уникальный идентификатор компьютера для служб WindowsUpdate
reg query \\%CompName%\HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate /v SusClientId >> RegWSUS.txt
REM Получаем состояние «Службы обновления Windows»
sc \\%CompName% query wuauserv >> RegWSUS.txt
REM Получаем параметры запуска «Службы обновления Windows»
sc \\%CompName% qc wuauserv >> RegWSUS.txt
REM Получаем состояние «Службы фоновой интеллектуальной поддержки (BITS)»
sc \\%CompName% query bits >> RegWSUS.txt
REM Получаем параметры запуска «Службы фоновой интеллектуальной поддержки (BITS)»
sc \\%CompName% qc bits >> RegWSUS.txt
)
goto :eof
EXIT
[/code][/spoiler]
Скачать скрипт можно здесь: [attachment=0]RegReceive.rar[/attachment]