none
Полная переустановка клиента RRS feed

  • Вопрос

  • Добрый день.

    Проблема такого плана - на рабочих станциях ранее были установлены клиенты (на начальной стадии тестирования системы). Соответственно им был присвоен тестовый сайт код.

    Сейчас имеем Secondary Site в данном регионе и боевой Primary Site.

    Пушатся клиенты с Secondary (через Proxy MP), цепляться должны соответственно к Primary Site.

    На новых машинах все проходит без проблем.

    На машинах где уже установлены клиенты, даже при установке флага Always install клиенты не переустанавливаются, падают ошибки "Отказано в доступе" или просто не происходит установка.

    Не подскажите как централизовано выполнить переустановку, руками ковырять каждую машину не вариант?

    23 ноября 2012 г. 12:01

Ответы

  • Совственно вот в чем была проблема - http://support.microsoft.com/kb/971058/ru#LetMeFixItMyselfAlways

    Отрабатываем данный bat'ник и все отлично ставится через Push :

    rem ЋаЁЈЁ­ « §¤Ґбм http://support.microsoft.com/kb/971058/ru
    @echo off
    Echo This batch file will Set Service Object Security for WUAUSERV & BITS.
    REM Result will be written to %temp%\SetServiceObjectSecurity.log and then launched in Notepad.
    Echo Please wait...
    @echo on
    sc sdset bits "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)" >%temp%\SetServiceObjectSecurity.log
    sc sdset wuauserv "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)" >>%temp%\SetServiceObjectSecurity.log
    @echo off

    notepad %temp%\SetServiceObjectSecurity.log
    Echo Open %temp%\SetServiceObjectSecurity.log for SUCCESS entry.
    Echo Open the Services applet from control panel to see if the services are started.
    Echo For any errors; report on http://groups.msn.com/NTarabia
    @echo off

    • Помечено в качестве ответа cblp_ok 7 декабря 2012 г. 5:03
    7 декабря 2012 г. 5:03

Все ответы

  • Я для таких целей писал логон-скрипт:

    dim oShell, sSMS, sArch, sPath
    On Error Resume Next
    set oShell = WScript.CreateObject("WScript.Shell")
    sArch = oShell.RegRead("HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\PROCESSOR_ARCHITECTURE")
    if sArch = "x86" then
    sPath = "HKLM\SOFTWARE\Microsoft\CCM\Security\AllowedRootCAHashCode"
    else sPath = "HKLM\SOFTWARE\Wow6432Node\Microsoft\CCM\Security\AllowedRootCAHashCode"
    end if
    sSMS = oShell.RegRead(sPath)
    If Err.Number <> 0 Then
    oShell.Run ("\\Domain\netlogon\ccmsetup.exe")
    wscript.quit
    end if
    if sSMS <> "8700BE79D67F017E9599B91BE373B1F4CD1474DC" then 
    oShell.RegWrite sPath, ""
    oShell.Run ("\\Domain\netlogon\ccmsetup.exe")
    end If
    Соответственно, в папку NETLOGON я копировал файл ccmsetup.exe и проверьте на заведомо рабочем клиенте ветку реестра HKLM\SOFTWARE\Microsoft\CCM\Security\AllowedRootCAHashCode, значение из этой ветки вставьте в скобки в выделенной жирным шрифтом строке.

    Vladimir Zelenov | http://systemcenter4all.wordpress.com

    23 ноября 2012 г. 12:54
    Отвечающий
  • Извините, это не ваш случай. Я этот скрипт использовал, когда мы меняли внутренний центр сертификации со всеми сертификатами. У вас AD расширена?


    Vladimir Zelenov | http://systemcenter4all.wordpress.com


    23 ноября 2012 г. 13:24
    Отвечающий
  • >>Не подскажите как централизовано выполнить переустановку, руками ковырять каждую машину не вариант?<<

    Как правильно заметили выше, для этого лучше всего использовать скрипты,

    единственное, что могу предложить  - чуть другой скрипт (http://blog.configmgrftw.com/?page_id=349)


    23 ноября 2012 г. 13:36
    Отвечающий
  • У меня была ситуация, где клиенты устанавливались, но сайт был не верный или просто пустым, и как не странно устанавливаться автоматически не хотел.

    Я написал скрипт, который наверно нужно доработать, и пустил его через домен. Может будет полезным, смотри сам. Только там нужно указать код сайта и сервер MP. Так же вместе со скриптом необходимо держать файл CCMSetup.exe или указать на его расположение.

    '''''''''''''''''''''''''''''''''''''''''''''''''
    ' Kozhemyak Nikolay
    ' VBScript Source File
    ''''''''''''''''''''''''''''''''''''''''''''''''''
    Option Explicit
    On Error Resume Next
    
    ' Переменные-------------------------------------
    Dim sSiteCode
    Dim sServerMP
    Dim sServerFSP
    Dim sPathToClient
    Dim oWshShell
    Dim oFSO
    Dim oLogFile
    Dim sLogPath
    Dim bCyrilicComputerName
    Dim ExitCode
    
    ' Создание переменных----------------------------
    sSiteCode  = "___"
    sServerMP  = "_____________"
    sPathToClient = "\CCMSetup.exe" & " /service /BITSPriority:NORMAL /mp:" & sServerMP & " SMSSITECODE=" & sSiteCode & " SMSMP=" & sServerMP
    'sLogPath = GetHomePath & "\CCM_vbs.log"
    sLogPath = "C:\CCM_vbs.log"
    
    ' Создание объектов -----------------------------
    Set oWshShell = WScript.CreateObject("WScript.Shell")
    Set oFSO = WScript.CreateObject("Scripting.FileSystemObject")
    Set oLogFile = oFSO.OpenTextFile(sLogPath,2,true)
    
    'wscript.echo Now & " | " & Err.Number & Err.Description
    '==============================================================================
    '==============================================================================
    ' Основной цикл установки клиента =============================================
    	Err.Clear()
    	bCyrilicComputerName = IsCyrilic(GetComputerName)
    	oLogFile.Writeline Now & "--Begin Script"
    	'wscript.echo Now & " | " & Err.Number & Err.Description
    	
    	If ((Err.Number = 0) and not(bCyrilicComputerName)) Then
    		Err.Clear()
    		oLogFile.Writeline Now & "--Cyrilic in computername is ok! " & GetComputerName
    		'wscript.echo Now & " | " & Err.Number & Err.Description
    		If (REG_ClientExist = 0) Then
    			Err.Clear()
    			oLogFile.Writeline Now & "--Client is not install..."
    			ExitCode = oWshShell.Run(sPathToClient , 0, True)
    			'wscript.echo Now & " | " & Err.Number & Err.Description
    			If ((ExitCode = 0) and (Err.Number = 0)) Then
    				oLogFile.Writeline Now & "--Client install finish!"
    				COM_SetSiteCode(sSiteCode)
    				'wscript.echo Now & " | " & Err.Number & Err.Description
    				If (Err.Number <> 0) Then
    					oLogFile.Writeline Now & "--Error Assign Site - COM! " & Err.Number & Err.Description
    					Err.Clear()
    					WMI_SetSiteCode(sSiteCode)
    					'wscript.echo Now & " | " & Err.Number & Err.Description
    					If (Err.Number <> 0) Then
    						oLogFile.Writeline Now & "--Error Assign Site - WMI! " & Err.Number & Err.Description
    						Err.Clear()
    					Else
    						oLogFile.Writeline Now & "--Error Assign Site ok - COM!"
    					End if
    				Else
    					oLogFile.Writeline Now & "--Error Assign Site ok - WMI!"
    				End if
    			Else
    				oLogFile.Writeline Now & "--Client install error: " & Err.Number & Err.Description
    				Err.Clear()
    			End if
    		Else
    			Err.Clear()
    			oLogFile.Writeline Now & "--Client exist!"
    			If (COM_GetSiteCode <> sSiteCode) Then
    				'wscript.echo Now & " | " & Err.Number & Err.Description
    				oLogFile.Writeline Now & "--Site in not assigned!"
    				COM_SetSiteCode(sSiteCode)
    				'wscript.echo Now & " | " & Err.Number & Err.Description
    				If (Err.Number <> 0) Then
    					oLogFile.Writeline Now & "--Error Assign Site - COM! " & Err.Number & Err.Description
    					Err.Clear()
    					WMI_SetSiteCode(sSiteCode)
    					'wscript.echo Now & " | " & Err.Number & Err.Description
    					If (Err.Number <> 0) Then
    						oLogFile.Writeline Now & "--Error Assign Site - WMI! " & Err.Number & Err.Description
    						Err.Clear()
    					Else
    						oLogFile.Writeline Now & "--Error Assign Site ok - WMI!"
    					End if
    				Else
    					oLogFile.Writeline Now & "--Error Assign Site ok - COM!"
    				End if
    			Else
    				oLogFile.Writeline Now & "--Site in assigned right!"
    			End if
    		End if
    	Else
    		oLogFile.Writeline Now & "--Cyrilic computer name!!! Error!!!!"
    		Err.Clear()
    	End if
    	
    	oLogFile.Writeline Now & "-- End Scripts!"
    '==============================================================================
    '==============================================================================
    '==============================================================================
    ' Процедура проверки русских букв в имени -------
    Function IsCyrilic(sString)
    	Dim oRegExp
    	Set oRegExp = CreateObject("VBScript.Regexp")
    	oRegExp.global = true
    	oRegExp.ignorecase = true
    	oRegExp.pattern = "([а-я])"
    	IsCyrilic = oRegExp.Test(sString)
    	Set oRegExp = nothing
    End Function 
    
    ' Получить имя компьютера -----------------------
    Function GetComputerName()
    	Dim oEnvironment
    	Set oEnvironment = WScript.CreateObject("WScript.Shell")
    	GetComputerName = oEnvironment.ExpandEnvironmentStrings("%COMPUTERNAME%")
    	Set oEnvironment = nothing
    End Function
    
    ' Получить домашний каталог ---------------------
    Function GetHomePath()
    	Dim oEnvironment
    	Set oEnvironment = WScript.CreateObject("WScript.Shell")
    	GetHomePath = oEnvironment.ExpandEnvironmentStrings("%HOMEDRIVE%") & oEnvironment.ExpandEnvironmentStrings("%HOMEPATH%")
    	Set oEnvironment = nothing
    End Function
    
    ' Процедура назначения сайта через COM-----------
    Function  COM_SetSiteCode(ByVal sSite)
    	Err.Clear()
    	Dim oSMSClient
    	Set oSMSClient = CreateObject ("Microsoft.SMS.Client")
    	If (Err.Number = 0) Then
    		COM_SetSiteCode = oSMSClient.SetAssignedSite(sSite,0)
    	End if
    	Set oSMSClient = nothing
    End Function 
    
    ' Узнать назначенный сайт через COM-----------
    Function COM_GetSiteCode()
    	Err.Clear()
    	Dim oSMSClient
    	Set oSMSClient = CreateObject ("Microsoft.SMS.Client")
    	If (Err.Number = 0) Then
    		COM_GetSiteCode = oSMSClient.GetAssignedSite
    	End if
    	Set oSMSClient = nothing
    End Function 
    
    ' Процедура назначения сайта через WMI-----------
    Sub WMI_SetSiteCode(ByVal sSite)
    	Dim oCCMNamespace, oSMSClient, oParams
    	Set oCCMNamespace = GetObject("winmgmts://./root/ccm")
    	Set oSMSClient = oCCMNamespace.Get("SMS_Client")
    	Set oParams = oSMSClient.Methods_("SetAssignedSite").inParameters.SpawnInstance_()
    	oParams.sSiteCode = sSite
    	oCCMNamespace.ExecMethod "SMS_Client", "SetAssignedSite", oParams
    	Set oCCMNamespace = nothing
    	Set oSMSClient = nothing
    	Set oParams = nothing
    End Sub
    
    ' Проверка ключей реестра
    Function REG_ClientExist()
    	Dim oEnvironment, sProc, sVersion
    	Set oEnvironment = WScript.CreateObject("WScript.Shell")
    	sProc = oEnvironment.ExpandEnvironmentStrings("%PROCESSOR_ARCHITECTURE%")
    	If (sProc = "x86") Then
    		sVersion = oWshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Mobile Client\ProductVersion")
    	Else
    		sVersion = oWshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\SMS\Mobile Client\ProductVersion")
    	End if
    	
    	If (Left(sVersion, 1) = 4) Then
    		REG_ClientExist = 1
    	Else
    		REG_ClientExist = 0
    	End if
    	Set oEnvironment = nothing
    End Function
    
    ' Очищаем память --------------------------------
    set oWshShell = nothing
    set oFSO = nothing

    27 ноября 2012 г. 12:10
  • Есть же Right-Click Tools для SCCM. В нем есть функционал удаления клиента хоть с отдельной машины, хоть с коллекции в SCCM.
    29 ноября 2012 г. 10:32
  • Вот ссылка заодно на него и обновление.
    29 ноября 2012 г. 10:37
  • Есть же Right-Click Tools для SCCM. В нем есть функционал удаления клиента хоть с отдельной машины, хоть с коллекции в SCCM.

    Right Click Tools предполагает доступность всех рабочих станций, что практически недостежимо в более-менее крупных компаниях.

    Vladimir Zelenov | http://systemcenter4all.wordpress.com

    3 декабря 2012 г. 10:19
    Отвечающий
  • Совственно вот в чем была проблема - http://support.microsoft.com/kb/971058/ru#LetMeFixItMyselfAlways

    Отрабатываем данный bat'ник и все отлично ставится через Push :

    rem ЋаЁЈЁ­ « §¤Ґбм http://support.microsoft.com/kb/971058/ru
    @echo off
    Echo This batch file will Set Service Object Security for WUAUSERV & BITS.
    REM Result will be written to %temp%\SetServiceObjectSecurity.log and then launched in Notepad.
    Echo Please wait...
    @echo on
    sc sdset bits "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)" >%temp%\SetServiceObjectSecurity.log
    sc sdset wuauserv "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)" >>%temp%\SetServiceObjectSecurity.log
    @echo off

    notepad %temp%\SetServiceObjectSecurity.log
    Echo Open %temp%\SetServiceObjectSecurity.log for SUCCESS entry.
    Echo Open the Services applet from control panel to see if the services are started.
    Echo For any errors; report on http://groups.msn.com/NTarabia
    @echo off

    • Помечено в качестве ответа cblp_ok 7 декабря 2012 г. 5:03
    7 декабря 2012 г. 5:03