MSCC无法自动部署客户端

前言:

成都创新互联是一家专注于成都网站建设、网站建设与策划设计,东港网站建设哪家好?成都创新互联做网站,专注于网站建设十年,网设计领域的专业建站公司;建站业务涵盖:东港等地区。东港做网站价格咨询:18982081108

    SCCM是微软的一款资产管理软件,正常情况下和Windows兼容的很好。

    但是它严重依赖Windows原生的一些服务:

        AD,IIS,SQLserver,WDS,WSUS等等,所以部署的时候最好使用一台干净的服务器

    我就在一台开启了IIS和SQLserver服务器安装SCCM时出现了错误。

    换一台干净的服务器,安装很简单。

    在安装客户端的时候却发生了意外。。。

 

背景:

    1、在分公司部署SCCM,但是客户机加入总公司的域,并无法获得域管理员帐号密码。

    2、所有服务器,包括SCCM都在单独的本地域:Server.local

    3、客户机之前使用自制工具,做过无损域迁移。

    

出现的问题:

    1、使用SCCM发现了包括母公司和其它子公司的所有计算机和用户。

    2、域迁移的计算机不能推送SCCM客户端。

    3、客户端不能自动发现SCCM创建的站点。

 

 

怎么办?:

MSCC无法自动部署客户端



解决方案:

1、只想发现子公司的用户和设备,这让我想到了AD中的OU项。

    AD系统发现和AD的用户发现中,设置子公司的OU,再发现就是子公司所有的设备和用户了。

    MSCC无法自动部署客户端

 

2、域迁移的计算机不能推送SCCM客户端。

    1)、没有域管理员帐户,但是笔者想到域帐户可以登陆到每一台域计算机,所以,任意域帐户都是可以用于域内认证的,使用个人域帐户,成功发现和安装。

    2)、安装时,发现部分计算机无法安装,经调查之前做过域迁移,经比较,原来客户迁移时没有把子公司的组织加入管理员组。

           计算机-管理-系统工具-本地用户和组-组,在administrators加入域的子公司组织代码。格式:domain\group

    3)、这个时候,所有子公司的域用户帐户都会获得管理员权限,随之而来的问题是:

           难道所有客户端都手动添加一次吗?

            这样做显然效率低下,于是我想到了使用批处理解决问题,但是必须要有一个在本地计算机有权限的帐户,还好每台计算机都有Administrator帐户,并且密码都是一样的。

           客户端使用自己的域帐户登陆的,怎么能让每台客户端都自动运行批处理?

           第一步:使用SCHTASKS远程创建计划任务。为每台客户端添加一个计划任务,所属有者为domain\group,这样使用域帐户登陆的用户都会所选计划任务。代码:

for /f "tokens=*" %%host in (hostlist.txt) do (
echo %%host >>add_task_log.txt 2>&1
SCHTASKS /Create /F /S %%a /U %%host\administrator /P thisispasswrod /RU "domain\sub-company-group"  /SC MINUTE /MO 2 /TN add_group /TR \\172.31.200.200\soft\add_premission.bat >>add_task_log.txt 2>&1

)
pause

            每二步:编辑运行add_premission.bat的脚本。

            add_premission主要功能:向Administrators组添加domain\sub-company-group,删除上一条计划任务add_group,创建新的计划任务StartRun 

@echo off
echo -----------------------------
echo      系统正在配置SCCM.......
echo      出现用户帐户提示,请确定
echo        IT TEL:6666/8888
echo -----------------------------

>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
# 上面是以管理员运行,否则开启用户帐户控制的客户端无权限执行脚本文件

echo hostname >>add_group_log.txt 2>&1
net localgroup administrators domain\sub-company-group /add >>add_group_log.txt 2>&1
SCHTASKS /Delete /F /TN add_group 
SCHTASKS /Create /F /RU "domain\sub-company-group"  /SC ONSTART  /TN StartRun /TR \\172.31.200.200\soft\modify_reg.bat >>add_group_log.txt 2>&1

 

    3)、客户端不能自动发现SCCM创建的站点

           可能原因是服务器和客户端不在同一个域中,所以需要改客户端,SCCM的DNS站点值

           关于StartRun任务,是用来修改客户端站点值的。因为给域用户添加的计划任务,所以系统启动时,是不会执行的。

           所运行的脚本modify_reg.bat。

           以管理员方式运行,需要先把注册表文件site.reg和调用注册表的批处理addreg.bat复制到本地,再调用addreg.bat注入注册表。

           代码:

@echo off
echo -----------------------------
echo      系统正在配置SCCM.......
echo      出现用户帐户提示,请确定
echo        IT TEL:6666/8888
echo -----------------------------

>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )

copy \\172.31.200.200\soft\site.reg c:\site.reg
copy \\172.31.200.200\soft\addregtest.bat c:\addreg.bat
cd /D c:\
addreg.bat

         注册表side.reg:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\DP]
"ManagementPoints"="CMRDSV017.tmrd.local"
"SiteCode"="DM1"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Mobile Client]
"AssignedSiteCode"="DM1"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\CCMSetup]
"LastValidMP"="http://CMRDSV017.tmrd.local"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\CCM\LocationServices]
"DnsSuffix"="TMRD.LOCAL"

         addreg.bat

regedit  /s "c:\1.reg"

        4)、最后,手动执行StartRun这个任务。

for /f "tokens=*" %%a in (hostlist.txt) do (
echo %%a >>execlog.txt 2>&1
SCHTASKS /Run /S %%a /U %%a\administrator /P thisispasswrod /I /TN startRUN >>execlog.txt 2>&1
)
pause

 

 

 

 



分享题目:MSCC无法自动部署客户端
文章来源:http://cdiso.cn/article/pophod.html

其他资讯