欢迎光临 Enjoy IT (ITECN.NET) 登录 | 注册 | 帮助

小议ActiveSync证书

     一直忙着讨生活,写的东西不多。这几天公司同事开始使用Exchange的ActiveSync,(千万别以为我们落在了技术的后边,我们可是仅次于内部的测试者。实际上是因为成本啊流程啊,这里就不扯这些破事儿了)发现随Exchange ActiveSync推送的Mobile Management Policy实在是太麻烦……关于这些Policy有兴趣也可以探讨下~于是大家转而想另行配置SSL的邮件收发。这就面临一个问题,怎么拿到服务器的证书?

    做为全球有数的几大IT公司之一,虽然给的薪水不多,但是做事非常中规中矩。因此有关的移动设备管理策略非常到位。幸亏咱当了两年的Mobile MVP,还专门研究过CSP,因此这点小事……还难不倒我……

    同事也不是Windows Mobile啥也不会哦,很快就得到了分发的CAB文件,当然也就有了其中的_setup.xml。关于这个文件和对应的CSP介绍,有兴趣的同学可以往前翻。现在就只说这个东西和证书啥关系。

    我们来打开这个XML文件:

XML for Mobile Management Certificate CSP
    可以看到,这是一个标准的CSP文件,其Configuration Provider是CertificateStore,XML文件包含了一个证书的信息。于是,问题简化为怎么从这个文件里恢复出我们需要的证书。    中间那一大块“天书”无疑就是证书的内容了,可是,请注意那行字:"EncodedCertificate"。正是这行字让我得到提示,也让我走了点弯路。经过查询MSDN站点,得知证书部分使用了base64的编码方式,因此我自作聪明的找了个base64在线编解码的网站,想看看解出来的证书。用过那么多X.509证书,部署过那么多PKI架构,我当然知道证书文件里有证书的描述,因此想看看是不是能得到有关证书的内容。可是,可耻D失败鸟……

    当然没那么容易放弃,继续MSDN,还真找到官方描述了,贴出来:

    Adding a Certificate to the Root Store of a Windows Mobile-based Device

    证书导出为base64证书后,将HASH指纹和证书内容加入到XML文件,然后确定其CSP的格式,保存为XML文件,文件名为_setup.xml,然后打包成CAB文件。

    原来微软偷懒,就把证书头尾砍掉,放进XML文件…天雷阵阵…看看base64证书的真面目:

Base64 encoded CER file

    对照上面的XML,是不是就多了两行?如果你获得了这个CAB文件/CPF文件/XML文件,直接把证书复制出来,加上头尾两行,存成CER文件,搞定~

    那么,思考一下,为啥使用base64编码而不是DER编码的证书呢?其实很简单,有的邮件系统不一定支持全部的编码,而base64编码在大多数邮件系统中可以支持,因此使用base64编码更加适合。不论是复制执行,还是通过OTA方式推送到手机,都没有问题。

发表于 作者 HaoHu | 0 评论

OO个XX的Public Folder

    解开Public Folder不能重建和删除的死结~

    事情的起因是这样的,在一个已有Exchange2003的组织中,部署Exchange 2007,本来不想搞PB的,想让事情简单一点,Autodiscover来搞定这些事情,连OAB都准备搞在Web Service上,但是,忽然发现有好多Outlook 2003的用户,他们看不了忙闲信息……

    于是,决定还是把Public Folder开起来。但是没想到一波还真就三折了……

    在Exchange 2007里面开Public Folder很简单,直接在管理控制台里新建公用文件夹数据库就好了。或者使用power shell运行new-publicfolderdatabase,顺便说一句,我越来越喜欢power shell了~

    可惜的是,事情总不想我们想的那么简单。Hub/CAS是NLB,这不是问题,Mailbox是Cluster,这也不是问题,问题在于,创建Public Folder之后,没有成功的创建群集资源~也就是说,没办法创建数据库。

    创不了,那就删了重建吧。真要是那么简单,也就不值得我写这么一堆了。不论是EMC里面删除还是Power Shell删除,都会报找不到数据库。这该死了……删又不让删,用又不让用。要用说没数据库,又没法变出来,有心删了重建,又不给删除。重新再建一个?不行~提示你已经有公用文件夹数据库了。死循环了……

    打开Event Log就能看到报错~问题总要想法解决,最终不行就把AD对象删了!不过在那之前好好想想……我爸爸说,一个好的厨师,总要有把趁手的菜刀~做IT Pro怎么能没几个好工具呢。拉出AD Explorer,联到AD,找到Configuration,Service,Exchange然后Public Folder(过程略),关键点来了,看到Public Folder的各个属性了吧,看看objectGUID,这是Public Folder Datacase的唯一标识符。记下来。

    imageimage

    忘了说,前面看到群集资源死活起不来,我就把它删了~因此我试着删除PublicFolderDatabase的时候就报找不到这个GUID的群集资源了。 好吧,咱不是会改AD和Registry么。再建一个再改~把群集资源的GUID改成这个,再把资源online……失败了……

    image

    什么原因阿……抓掉头发……不行,我的搞清楚,看看mailboxdatabase吧,至少它是正常的。哦!原来不是资源而是它对应的参数DatabaseGUID。再改……这次看你还不就范!终于好了。

    对了,忘了说怎么看PublicFolderDatabase和MailboxDatabase的GUID了,很简单,用power shell,get-publicfolderdatabase |fl。

    image

    Event Log显示PB正常了~把database mount上,搞定。3点了……补个觉……老了,抗不住了……

发表于 作者 HaoHu | 1 评论
归档在:

EFS增强——重装系统时,再也不会忘记导出私钥了

    EFS,全称是加密文件系统,是自从Windows 2000开始就具有的,方便而又安全的文件保护功能。EFS依托于NTFS文件系统,系统内核的支持使得访问加密后的文件如同普通文件一样方便快速。这里并不向您介绍EFS的详细功能和原理,因为您可以在Windows帮助文件中方便地找到更为详尽的介绍。

    EFS很好很强大,因为除了将文件加密的用户和指定的恢复代理,谁也无法将加密的文件进行解密。正因为如此,有许多用户尚未仔细了解该功能就把文件加密了,重装系统后,加密的文件就再也无法访问了。

    幸运的是,在我们不断地向产品组提出反馈后,Windows 7终于有办法能够帮助我们避免这个问题了。

    在Windows 7中第一次使用EFS对文件进行加密时,系统就会在任务栏弹出一个“备份文件加密密钥”的提示。

    clip_image002

    正如提示所表明的,备份EFS密钥能够避免系统重装等引起的,再也无法访问加密文件。

    点击这个提示,就能够打开加密密钥的备份向导。如果您现在很忙,也可以选择“稍候备份”,Windows将在下一次登录时再次提醒您。点击“现在备份”,就可以开始备份您的加密文件密钥。

    clip_image004

    系统将自动打开“证书导出向导”,帮助您将加密文件系统的证书导出并保存到安全的位置。

    clip_image006

    强烈建议您将证书保存到安全的移动存储或者其他存储位置。这样可以避免错误操作或者物理损坏破坏证书。

    clip_image008

    因为加密文件系统证书必须包含私钥,因此系统只允许导出为含有私钥的PFX证书文件,同时也不允许导出的同时删除私钥。那样的话,您的EFS加密文件就不能访问了。

    clip_image010

    为了保护您的证书文件,需要为证书输入一个密码。请不要忘记这个密码,否则即使您导出了证书,也会因为无法使用而不能再访问加密文件。

    clip_image012

    为证书文件指定保存的位置。可以选择备份到移动存储介质,甚至备份到Windows Live的SkyDrive都行。只要记住两点:

    · 保护您导出的证书

    · 记住您证书的密码

    clip_image014          clip_image016

    对信息确认无误后,即可完成加密文件系统的证书备份。如果您再次重装系统,只需要将导出的证书导入到新的系统,即可访问以前加密的文件。

    什么?您取消了“备份文件加密密钥”向导之后才看到这篇EKB?哦,那可太糟了,怎么办?

    别急,Windows 7不会让您失望的。打开您的“控制面板”,找到“用户账户和家庭安全”,选择“用户账户”。

    clip_image019

    在左边您就能找到“管理文件加密证书”选项。在这里,您能够随时管理您的文件加密证书,包括备份

发表于 作者 HaoHu | 1 评论
归档在:

OSD的自动ACPI

    今天有一老外在邮件组里问如何一个镜像支持所有XP的安装。我想啊,我不正在搞这个么~给他回一个呗。就把如何让XP应用正确的Storage Driver写给他了。这兄弟充分发挥了打破砂锅的特定,继续问我怎么支持不同ACPI mode呢?说实话我以前还真琢磨过,不过记忆和年纪此消彼长,实在记不住了,于是搜~

    首先找到一个用devcon的批处理,花了几分钟看了一下。这个判断ACPI是不是正确,不正确的就改。然后又找到一个脚本,粗粗看了看,里面有WMI的query和注册表的读取,还有HAL相关文件的调整。就是来不及在TS里测试了。

    为了帮自己记忆,也为了帮有同样需求的朋友,我把它们都放上来。

Reference:

@echo off
:DRIVER_HAL_UPDATE
    SET HAL=
    IF %NUMBER_OF_PROCESSORS%==1 (
      devcon.exe /find @ROOT\ACPI_HAL\0000 | find /i "Multiprocessor" > NUL && SET HAL=ACPIAPIC_UP
      devcon.exe /find @ROOT\PCI_HAL\0000 | find /i "Multiprocessor" > NUL && SET HAL=MPS_UP
    ) ELSE (
      devcon.exe /find @ROOT\ACPI_HAL\0000 | find /i "Uniprocessor" > NUL && SET HAL=ACPIAPIC_MP
      devcon.exe /find @ROOT\PCI_HAL\0000 | find /i "Uniprocessor" > NUL && SET HAL=MPS_MP
    )
    IF NOT "%HAL%"=="" (
      ECHO.
      ECHO ----------------------------------------
      ECHO Installing %HAL% HAL
      ECHO ----------------------------------------
      ECHO.
      devcon.exe sethwid @ROOT\PCI_HAL\0000 := !E_ISA_UP !ACPIPIC_UP !ACPIAPIC_UP !ACPIAPIC_MP !MPS_UP !MPS_MP !SGI_MPS_MP !SYSPRO_MP !SGI_MPS_MP
      devcon.exe sethwid @ROOT\ACPI_HAL\0000 := !E_ISA_UP !ACPIPIC_UP !ACPIAPIC_UP !ACPIAPIC_MP !MPS_UP !MPS_MP !SGI_MPS_MP !SYSPRO_MP !SGI_MPS_MP
      devcon.exe sethwid @ROOT\PCI_HAL\0000 := +%HAL%
      devcon.exe sethwid @ROOT\ACPI_HAL\0000 := +%HAL%
      devcon.exe update %windir%\inf\hal.inf %HAL%
      devcon.exe ReScan
      ECHO.
      ECHO ----------------------------------------
      ECHO Rebooting
      ECHO ----------------------------------------
      ECHO.
      devcon.exe Reboot
     ) ELSE (
      ECHO.
      ECHO ----------------------------------------
      ECHO Correct HAL Detected
      ECHO ----------------------------------------
      ECHO.
     )
GOTO :EOF
发表于 作者 HaoHu | 1 评论

One World, One WIM – 2.把几个Windows放进一个WIM

    我们的目标不是没有蛀牙,而是一个wim文件完成组织所需要的Windows部署。

    开发部说他们需要Project和Visio,财务部说他们需要Access,市场部说他们需要Photoshop,秘书说她需要Acrobat。。。

    这年头谁都是IT的领导,为啥没有人问问我需要啥?我需要休假,我需要加薪,我需要每天看到儿子调皮捣蛋,我需要每天回家能有热饭热菜和热水。。。

    好吧,谁会管我?可我还是要管他们。只有有能力的人才会被要求,对吧?这句话送给和我一样苦大劳深的IT工人们~

    好,祈祷是有效的,每个部门都给你们一个特别配置的Windows,这下满足了吧?

    等一下,大家都满足了,可是问题来了。每个部门都是特别定制的安装光盘哦,同学,请不要在开发部安装财务部的系统好不好?诶,说你内,这是秘书的光盘,请不要装在你的机器上。。。

    难道绞尽脑汁之后还要大费口舌?额滴神哪,IT咋就这么累内。。。

    好吧,我再帮你一次。记得我们的口号?One WIM。。。

    你应该对imagex不陌生吧?就是帮助你制作WIM镜像文件的工具。他有一个好处,可以append新的镜像。如果镜像文件重复,就只保存一份。。。

    等一下好不好?看到你两眼放光了!没错,所有部门的windows不是都一样么?不一样的就是装的软件小小不同嘛。所以,尽管去把镜像做到一个WIM文件吧!

imagex <imagefile> /import <imagefile> <imagenumber> "description"
.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

    将一个wim文件导入到一个已存在的wim文件,当然,可以导好多个进去。详情请查阅imagex的帮助哈。

    相信能干的你一定没有问题。但是接下来问题来找你了。OSD的TS怎么知道安装哪一个镜像到系统呢?

    还记得变量么?在TS里面有着许多许多变量,以“_”开头,比如_OSDMachineName之类。如果仅仅只有这些OSD就不值得我尊敬了,他还可以自定义变量。我们可以自定义一个变量叫做“ForDepartmant”,然后在“Apply Image”的步骤里面,选择条件为“ForDepartment”等于“HR”之类,应用对应HR的镜像。怎么选择HR的镜像?看看Apply Image,是不是有个下拉框可以选择WIM文件中哪一个镜像?就是它了。

     别急,还没有完。有变量不错,你还需要为变量赋值。需要添加一个TS步骤,执行一个脚本,让用户选择或者通过AD查询拿到用户对应的部门。这样,用户再也不会装错其他部门的镜像了。

    我们的目标不是没有蛀牙,而是一个wim文件完成组织所需要的Windows部署。

发表于 作者 HaoHu | 1 评论
归档在:

One World, One WIM –1.让Windows XP的OSD支持SATA

    我们的目标不是没有蛀牙,而是一个wim文件完成组织所需要的Windows部署。

    众所周知,Windows Vista之后,系统才能够在启动时自动识别CPU和Storage Bus类型,也就是说,作出的系统镜像,如果在不同HAL的硬件上进行部署,就会蓝屏。最多见得就是0x0000007b,磁盘不可访问。

    是的,重现这个问题非常容易。在虚机上安装Windows XP,然后不论使用SysPrep再Ghost,还是使用OSD的光盘抓取镜像,都会在部署这个镜像后蓝屏。又或者,在一台笔记本上以模拟IDE模式下安装系统,然后在SATA模式下部署,仍然是0x7b的蓝屏。

    难道就为了这个原因把全公司都升级到Windows Vista或者Windows 7?当然,如果能够说服你的老板,我举双手赞成你升级~可貌似说服老板是一件很难的事情,有没有相对简单一点的解决办法呢?让我来帮你找找~

    办法终归还是有的。幸好SCCM有Task Sequence,好用的TS~

    如果你用过OSD,编辑过TS,问题就简单多了。记得TS里面有‘Apply Driver’吗?注意,不是apply driver package。我们要做的,是针对对应的存储芯片,给它对应的驱动程序。目标很明确吧?怎么做呢?

    做这件事之前,先了解一下WMI。TS之所以很强大,是因为它能够在OSD的过程中完成许多的变量填充和读取。依靠这些变量,就能够掌控TS的走向。因此,我们只要设法查出目标机器的存储芯片类型,然后去apply对应的驱动程序就可以了。

    那么,现在问题的关键在于怎么识别机器的存储芯片类型了。

    这个其实很简单。

    打开wmic控制台,输入IDEController Get Caption,DeviceID

wmic:root\cli>idecontroller get caption,deviceid
Caption                                              DeviceID
Intel(R) ICH8M Ultra ATA Storage Controllers - 2850  PCI\VEN_8086&DEV_2850&SUBSYS_01F91028&REV_02\3&2B8E0B4B&0&F9
IDE Channel                                          PCIIDE\IDECHANNEL\4&F8CCD10&0&0
Intel(R) 82801HEM/HBM SATA AHCI Controller           PCI\VEN_8086&DEV_2829&SUBSYS_01F91028&REV_02\3&2B8E0B4B&0&FA

    你机器上的存储芯片一目了然了吧。这个查询当然可以用在OSD的TS中。

    你该问我,这个东西有啥用了吧。好,我们继续。为了让OSD自动识别存储芯片,我们需要把各个存储芯片的型号提供给TS,然后TS可以按照型号来自动‘Apply Driver’。那我们就可以在TS的特定步骤给它设定条件,使用WMI查询设定条件。

    看到上面PCI\VEN_8086&DEV2829。。。的内容么?这个就是ICH8M芯片的特征码。只要我们查询到芯片组含有此特征码,就是ICH8M套片无疑。因此,我们只需要让TS执行一个有条件的,安装Intel(R) ICH8M-E/M SATA AHCI驱动的步骤即可。而这个条件就是,查询的结果包含以上特征码。

SELECT * FROM Win32_IDEController WHERE DeviceID LIKE "%VEN_8086&DEV_2829%

    简简单单一行查询代码,就帮你搞定了蓝屏的麻烦。

    你问怎么导入驱动?别开玩笑啊。你真的不知道?那么联络我吧。

    我们的目标不是没有蛀牙,而是一个wim文件完成组织所需要的Windows部署。

发表于 作者 HaoHu | 1 评论
归档在:

SIG的猜想

     这是一句没头没脑的话,在我解释清楚之前你肯定不知道我想说什么。

    SIG其实是两个文件夹的名称的一部分,一个叫SMSSIG$,一个叫SMSPKGSIG,是不是很眼熟?没错,他们就是出现在SCCM 2007中的两个文件夹。

    兄弟驽钝,却爱刨根问底,看到SCCM 2007出来一堆共享文件架,不免奇怪,觉得有点乱,这也可以说是一种IT洁癖,希望一个Tree就组织所有资源。打住,咱们回到话题,为啥要猜想SIG。

    事情源于我一个‘很无聊’的操作,我把用于OSD的操作系统包的位置,挪了一下。我知道这会引发操作系统包的问题,需要重新指定源文件位置。我猜中了这开始,但是我没猜中这结局……兴冲冲的打开虚机,准备PXE启动以后来个网络定制安装,结果来了一堆错误代码。我这人爱瞎琢磨啊,用小沈阳的话说,‘这是为什么呢?’琢磨来琢磨去,觉得是不是权限的问题?检查了一遍,没事儿啊。看了看SMS_PXE_***的status,也正常啊,日志里有MAC,有GUID,就是没有报错。静下心,把整个控制台树溜了一遍。

    嗯?!Install Pending?再一看,Version = 2?我想起来了,刚才不是改了包的原位置么?搞了半天,包还没就绪。。。不就是复制到DP么?为啥这么慢呢?

    再次体现出我的臭毛病,一个文件夹一个文件夹看过来。SMSPKGC$?这里看不出什么问题,不论是文件数量还是总计大小。因为我只是搬了个家嘛。继续。。等等,看到都是一个Package ID的文件夹了。怎么还多个‘.1’啊?大小也不对啊,怎么大多是1k的?难道跟P2P下载类似,先用名字占个位置?

    忽然想到,是不是所谓的二进制差异更新?嗯,有可能,很有可能~这个1k的同名文件里面可能就是MD5或者Hash之类的散列值~这样,一旦有文件被更新(举个例子,对原有XP安装介质应用集成SP3的update),系统将根据散列值信息决定哪些文件将做何种更新。然后,还将这些信息按照包和版本打包成tar文件,便于DP间同步。

    到目前为止,以上全为我的猜测。如果你知道确切地答案,请不吝赐教。等项目空点时间,我再找产品组的牛人们请教一下。

发表于 作者 HaoHu | 0 评论
归档在:

To be MVP

船长日志 275912:49:53

最近一直很忙~前几天MVP Team邮件,让想想自己的口号,于是找了3个单词,正好首字母就是MVP。

Mission 我的英文不好,所以不免断章取义。我觉得一个人活在世上,应该有个使命感,不论是对自己,对家人,乃至对社会,对国家。或者说,要好好活着。除了吃喝玩乐之外,好好地活着,做有意义的事。

Vision 不要总是埋头于每天的工作生活。不要局限于每天接触的人和事。适当的时候要抬头看看。登东山而小鲁,登泰山而小天下。谁说做Help Desk的人就只能埋头Incident,而不能看看的IT strategy呢?

Passion 再远大的理想,往往也敌不过日复一日枯燥工作生活的消磨。如果没有了热情,生活会变得乏味。无法点燃热情,就会失去生活的勇气。找一些东西,让自己快乐起来,哪怕仅仅就是解决一个小小的Case。

只要你愿意,谁都可以是自己的MVP。

发表于 作者 HaoHu | 3 评论

SCCM的OSD常见场景

    SCCM发布已有一段时间了,相较SMS 2003的ODFP(Operating System Deployment Feature Pack),OSD不但完全集成到SCCM当中去了,而且还开始支持Vista和Windows Server 2008。由于内建WAIK(Windows Automated Installation)和WIM GAPI, 对WIM的支持也达到一个非常的高度。加之可以使用更高版本的WinPE(Windows Pre-installation Environment),使得操作系统的部署前所未有的简单和方便。

    仔细看看SCCM的控制台树,再看看ITIL或者MOF的资料,你就可以发现,太多的地方都是参考了这些方法论来设计的。资产管理(SMS开始它的主要功能就是这个)、生命周期管理(OSD应该算在内吧)、配置管理(在DCM中)、SLM(借助自定义集合很容易做到)……还有很多,可能需要用专门的文章介绍了。这里我们就只简单讨论一下OSD在IT常见场景中的一些应用吧~

    有没有曾经想过,分支办公室的同事,采购了一批配置相同的新机器,然后需要按照公司策略安装诸如Office之类的商业应用程序和自己的LOB应用程序。这些机器将由使用中文和使用英文的同事使用,它们需要加入到公司的域,用户希望保留原来在旧机器上的文档和邮件……请不要告诉我您准备使用番茄花园……您会发现机器不能使用某些程序和不能正常加入到域。

    使用OSD,您可以让同事把一台机器装好,把所有的机器插上电,然后就可以让他早点回家享受家的温馨(好羡慕…回家看到一盏温馨的灯在等你多幸福!),剩下的事情,交给我们和SCCM吧。

    我们可以远程去抓取模板机器(就是刚才那位同事装好的机器)的镜像。这个过程只需要良好的网络连接就可以。OSD中有一个重要的配置分支叫做Task Sequence,它的作用是告诉SCCM,你都该干些什么事情,先干什么,后干什么,怎么干。下面就是远程抓取镜像的一个例子。

OSD01

    (1)安装部署工具,其实也就是sysprep工具。如果您不知道这是干什么的,请联系我另行说明。

     (2)加入工作组。在域的机器直接sysprep不妥当。当然,新安装的机器可以跳过这一步。为了兼容大部分的情况,还是留着吧。

     (3)配置SCCM客户端。别忘记系统抓取以后还是要进入正常工作状态的。

     (4)sysprep,抹去特征信息。(灰色的部分不执行)

     (5)抓取模板机器。

这样,一台安装好的机器就被抓取镜像了。接下来把这个镜像推到其他的机器上,等到用户一开机,顺着向导输入必要的信息,就一切就绪了。

    步骤看上去挺简单吧?可是SCCM在后面做了大量的工作呢,不信?看看这个XML吧。

<?xml version="1.0"?>
<SmsTaskSequencePackage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <BootImageID>00100001</BootImageID>
  <Category />
  <DependentProgram />
  <Description />
  <Duration>360</Duration>
  <Name>Capture</Name>
  <ProgramFlags>152084496</ProgramFlags>
  <SequenceData>
    <sequence version="3.00">
      <referenceList>
        <reference package="00100006" />
      </referenceList>
      <group name="Capture the Reference Machine" description="Actions to prepare and capture the reference machine">
        <step type="SMS_TaskSequence_InstallDeployToolsAction" name="Install Deployment Tools" description="" runIn="FullOS" successCodeList="0">
          <action>osdprepareos.exe /install:00100006</action>
          <defaultVarList>
            <variable name="SysprepPackageID" property="SysprepPackageID" hidden="true">00100006</variable>
          </defaultVarList>
        </step>
        <step type="SMS_TaskSequence_JoinDomainWorkgroupAction" name="Join Workgroup" description="" runIn="FullOS" successCodeList="0">
          <action>osdjoin.exe /type:%OSDJoinType%</action>
          <defaultVarList>
            <variable name="OSDJoinPassword" property="DomainPassword">
            </variable>
            <variable name="OSDJoinSkipReboot" property="SkipReboot">false</variable>
            <variable name="OSDJoinType" property="Type">1</variable>
            <variable name="OSDJoinWorkgroupName" property="WorkgroupName">Workgroup</variable>
          </defaultVarList>
        </step>
        <step type="SMS_TaskSequence_PrepareSMSClientAction" name="Prepare ConfigMgr Client" description="" runIn="FullOS" successCodeList="0">
          <action>osdpreparesmsclient.exe</action>
          <defaultVarList />
        </step>
        <step type="SMS_TaskSequence_JoinDomainWorkgroupAction" name="Join Domain or Workgroup" description="" disable="true" runIn="FullOS" successCodeList="0">
          <action>osdjoin.exe /type:%OSDJoinType%</action>
          <defaultVarList>
            <variable name="OSDJoinSkipReboot" property="SkipReboot">false</variable>
            <variable name="OSDJoinType" property="Type">1</variable>
            <variable name="OSDJoinWorkgroupName" property="WorkgroupName">Workgroup</variable>
          </defaultVarList>
        </step>
        <step type="SMS_TaskSequence_PrepareOSAction" name="Prepare OS" description="" runIn="FullOS" successCodeList="0">
          <action>osdprepareos.exe /activate:%OSDKeepActivation% /bmsd:%OSDBuildStorageDriverList%</action>
          <defaultVarList>
            <variable name="OSDBuildStorageDriverList" property="BuildStorageDriverList">false</variable>
            <variable name="OSDKeepActivation" property="KeepActivation">false</variable>
          </defaultVarList>
        </step>
        <step type="SMS_TaskSequence_RebootAction" name="Restart Computer" description="" disable="true" runIn="WinPEandFullOS" successCodeList="0">
          <action>smsboot.exe /target:WinPE</action>
          <defaultVarList>
            <variable name="SMSRebootMessage" property="Message">A new Microsoft Windows operating system is being installed. The computer must restart to continue.</variable>
            <variable name="SMSRebootTimeout" property="MessageTimeout">60</variable>
            <variable name="SMSRebootTarget" property="Target" hidden="true">WinPE</variable>
          </defaultVarList>
        </step>
        <step type="SMS_TaskSequence_CaptureSystemImageAction" name="Capture the Reference Machine" description="" runIn="WinPE" successCodeList="0">
          <action>osdcapturesystemimage.exe</action>
          <defaultVarList>
            <variable name="OSDCaptureDestination" property="CaptureDestination">\\Sccm-server-1\Packages\CapTemp\TestXP.wim</variable>
            <variable name="OSDCaptureAccountPassword" property="CapturePassword">
            </variable>
            <variable name="OSDCaptureAccount" property="CaptureUsername">labsccm\administrator</variable>
            <variable name="OSDImageCreator" property="ImageCreator">Administrator</variable>
            <variable name="OSDImageDescription" property="ImageDescription">
            </variable>
            <variable name="OSDImageVersion" property="ImageVersion">1.0</variable>
          </defaultVarList>
        </step>
      </group>
    </sequence>
  </SequenceData>
  <SourceDate>2008-04-10T18:21:31</SourceDate>
  <SupportedOperatingSystems>
    <SmsOperatingSystemDetails>
      <MaxVersion>5.10.9999.9999</MaxVersion>
      <MinVersion>5.10.0000.0</MinVersion>
      <Name>Win NT</Name>
      <Platform>I386</Platform>
    </SmsOperatingSystemDetails>
  </SupportedOperatingSystems>
  <IconSize>0</IconSize>
</SmsTaskSequencePackage>

    看明白的同学请举手。其实,在SCCM管理控制台里设置的参数,在这里全部有描述。你可以知道每一步由那个程序来运行,做了怎样的工作。

    那位幸福的同事,我们还可以让他更加幸福。他甚至不必等到系统安装完成就可以赶回家,一家晚餐,其乐融融~不信?看看这个。

image

    (1)直接重启机器到Win PE。

    (2)分区,当然,怎么分区由您说了算。

    (3)安装操作系统。

    (4)配置Windows系统,比如序列号,本地管理员密码等等。

    (5)配置网络。别忘记,固定的IP才能在系统重启后进行连接管理,对么?加域还是加工作组,也在这里。

    (6)安装驱动。

    (7)安装SCCM客户端。没有它后边的事情谁干?

    (8)安装补丁。

    (9)请转看前面抓取步骤,不在重复。

    啊?你问我抓完了系统剩下那么多新机器怎么办?那位幸福的同事不是已经回家了么?我也要回家吃泡面了,所以,把前面介绍的1-8步骤定义为系统安装吧。那些机器这样安装一遍,不就什么都搞定了?

    顺便告诉你一个小秘密,在SCCM里,你是可以远程唤醒一台机器的。知道为什么我叫那位幸福的同事把电源线和网线全部接好再回家了吧?

    好了,点击“完成”,我们还来得及赶最后一班地铁。

发表于 作者 HaoHu | 0 评论
归档在:

CSP-SCCM管理Mobile Device

    前面简单介绍了何谓CSP,务虚的东西总是很难给人留下印象的。如果要找一个平台来了解CSP如何工作,我想没有比SCCM更适合了。

SCCM DM01   

    我们一起来看看吧~

    从SMS 2003开始,可以通过Device Management Feature Pack来实现对Mobile Device的管理。而到了SCCM(SMSv4),这些功能更是直接内嵌到系统成为系统的一部分。

    如图,系统提供了常见的移动设备配置选项。在系统里被称为Configuration Management Item(后面简称CMI)。基于这些Item,就可以设定一个配置集,然后将其打包成一个Package,使用SCCM的分发功能,将其分发到通过ActiveSync或者Mobile Device Management Center连接的移动设备上,或者通过直接连接进行部署。这里就以一个示例的Package来说明。

    为了设置一个配置选项,必须首先新建一个CMI,将对应的配置设置好。这里首先用一个收藏夹配置来做示例。

 

 

 

sccm dm06  sccm dm07

    创建CMI的好处在于,可以为不同的用户集合使用不同的配置。就像SMS/SCCM可以根据计算机OS不同、配置不同甚至OU不同使用不同的配置一样,也可以为不同的移动设备使用不同的自动配置。例如,给不同国家的分支机构,使用不同语言版本的站点链接。这里是一个最简单的例子。

    在试验中,为了考察所有内置的配置选项,在生成的配置包Package中,包含了所有的CMI。这也说明一个推送出去的自动配置包,可以进行多方面的配置设置。

sccm dm02 sccm dm03

sccm dm08    由此生成的Package,就会包含一个XML文件。在Package的分支里面我们可以查看已经包含的CMI,然后可以看到最终生成的就是一个XML文件,这里这个文件是“LAB00003.XML”。

    它是什么样子的呢?让我们把它打开看看。

    在SCCM的安装目录里面,如果您配置过了Device Management,就会有一个目录叫做“DeviceClientDeployment”。在我们的试验里,在这个目录里有这样的一个文件夹:“\DeviceSettingPackages\LAB00003”,请注意,这个目录与我们的Packages的名字是对应的。在其中,就发现了我们前面看到的LAB00003.XML。为了节省地方,只将其中的一部分贴出来,同时对格式进行了必要的排列:

<wap-provisioningdoc>
    <characteristic type="Sync">
        <characteristic type="Connection">
            <parm name="Server" value="mail.microsoft.com" />
            <parm name="User" value="user" />
            <parm name="Domain" value="domain" />
            <parm name="AllowSSLOption" value="1" />
        </characteristic>
        <characteristic type="Settings">
            <parm name="PeakFrequency" value="15" />
        </characteristic>
        <characteristic type="Contacts">
            <parm name="Enabled" value="1" />
        </characteristic>
        <characteristic type="Calendar">
            <parm name="Enabled" value="1" />
            <parm name="CalendarAgeFilter" value="5" />
        </characteristic>
        <characteristic type="Mail">
            <parm name="Enabled" value="1" />
            <parm name="MailBodyTruncation" value="1024" />
            <parm name="EmailAgeFilter" value="4" />
        </characteristic>
    </characteristic>
    <characteristic type="SecurityPolicy">
        <parm name="4101" value="16" />
        <parm name="4122" value="0" />
        <parm name="4102" value="1" />
        <parm name="4103" value="16" />
        <parm name="2" value="1" />
    </characteristic>
    <characteristic type="BrowserFavorite">
        <characteristic type="Hao Hu">
            <parm name="URL" value="http://haohu.spaces.live.com" />
        </characteristic>
    </characteristic>
    ......

     最后一段XML就是我们之前图中对收藏夹的那个配置CMI,是不是很眼熟?是的,这就是标准的CSP格式的配置XML。至于他们具体的意义,以后再开贴子说明。

    为了搞清楚这些XML是如何被应用到移动设备,我又在SCCM里面挖了一阵子,还真让我发现了点什么。有一个叫做devicesettingcfg.xml的文件,描述了这些移动设备配置包使用的动态链接库和对应的类。同样,只贴出一部分:

<DeviceSettingPackage Platform="PPC06"
                      PackageWriterAssembly="DeviceSettings.CPF.dll" PackageWriterClass="DeviceSettingPackageCPFWriter"
                      DefaultItemWriterAssembly="DeviceSettings.CSP.dll" DefaultItemWriterClass="DeviceSettingItemCSPWriter">
    <DeviceSettingType Type="MS.Sync2"/>
    <DeviceSettingType Type="MS.BrowserFavorite"/>
    <DeviceSettingType Type="MS.Certificate"/>
    <DeviceSettingType Type="MS.Email"/>
    <DeviceSettingType Type="MS.GPRS"/>
    <DeviceSettingType Type="MS.PPP"/>
    <DeviceSettingType Type="MS.Proxy"/>
    <DeviceSettingType Type="MS.Registry"/>
    <DeviceSettingType Type="MS.VPN"/>
    <DeviceSettingType Type="MS.SecurityPolicy"/>
    <DeviceSettingType Type="MS.WiFi"/>
</DeviceSettingPackage>

    看到了么?熟悉的缩写,CPF,CSP。您终于相信SCCM和CSP的不可分割的联系了吧?

发表于 作者 HaoHu | 0 评论

CSP-开篇简介

在很久很久以前,在我的Webcast中介绍过CSP这个用于配置Mobile Device的好东西。一直都很想把这些东西理一理,可是一直都忙于各种乱七八糟的事情。现下遇到了这辈子目前为止最大的一次考验,我想也许做点事情心情会好一些,所以真的坐下来写一写了。

oma01说到CSP之前,首先要提到DM,Device Management。而说到DM,就没有办法回避一个词,OMA。OMA DM全称Open Mobile Alliance Device Mangement,是几大移动软硬件厂商共同建立的标准指定组织OMA确定的设备管理规范。oma02

CSP的全称叫Confiuration Service Provider,以一个xml文件的形式表现。这个xml文件实际上是一个有着许多属性的树形结构。从某种意义上来说,可以认为它类似注册表,为不同的设定项指定了参数。

而实际上,在Windows Mobile平台上,这些CSP所表达的配置,最终大部分也是通过注册表在系统中实现。

微软提出的CSP已经作为OMA DM的一个重要分支。 作为一直关注Mobile领域的巨头,微软也是其中重要的Sponsor之一。

使用CSP管理机制的最大好处,莫过于实现配置的自动化。如果有几十台PPC放在你的面前,一台一台去进行配置,枯燥的点击会让人崩溃~如果这几十台PPC分布在不同的城市,不同的国家……

实际上,在Windows Mobile上使用的csp xml并不直接以原本面目出现。为了兼容Windows Mobile安装的方式,这个xml文件会命名为_setup.xml。然后,这个文件会被打包成标准的microsoft格式的cab压缩包。这时,这个文件就可以直接在Mobile设备上运行,然后应用其中设置的配置。为了区别于普通cab安装包,通常,会让这类文件使用*.cpf的后缀名。

完整的配置体系才能够发挥出自动配置的巨大威力。在服务器后端,由Exchange 2003/2007,SMS 2003/SCCM 2007为设备管理提供了强大的支持。拔高了说,这些服务器平台提供了ITIL中关于SLM,Configuration Management等等环节的具体实现手段。

但是,这并不是所有的手段。微软以至于OMA提供的配置手段大大出乎你的想想。除了通过微软自己的管理平台Exchange+ActiveSync+SMS/SCCM,除了你自己把配置文件复制到存储卡上并运行,你甚至可以把这个文件通过空中接口(Over-The-Air)方式,以短信等方式发送到目标移动设备上去。

中国移动就这样做过。记得通过其网站发送有关GPRS的配置吗?是的,CSP,这就是那神奇功能背后的秘密。

此外,CSP提供了有关的权限管理,因而OEM厂商 和移动运营商能够有选择性地禁用 CSP 以锁定他们不想更改的功能。

为了便于采用合适的方式,这里将现有的CSP部署方式枚举一下:

1、写一个将XML文件内容发送到CSP的应用程序,重命名为autorun.exe,然后把它和XML文件一起放到存储卡根目录下的2577目录。如果你使用过存储卡来升级移动设备,那么对这个2577目录一定不会陌生。一旦该存储卡插入设备,或者是放入存储卡后启动设备,这个程序将会把XML中的配置内容发送到CSP。

2、通过 ActiveSync® 或 Windows Mobile Device Center 连接设备,不必编写任何程序就能配置设备。桌面工具 rapiconfig.exe 位于 Windows Mobile SDK 的工具目录下。该工具将读取 XML 文件并使用 RAPI 配置当前连接到 ActiveSync 的设备。连接设备后,在SDK 中的tools目录键入:rapiconfig config.xml (假定将 XML 文件命名为 config.xml。有关 RapiConfig 的详细信息,请参阅 msdn2.microsoft.com/bb737541.aspx)。

3、更简单的,可以创建一个 CAB 或 CAB 配置格式 (CPF) 文件。CAB 和 CPF 都可以复制到设备中,并且无需运行程序即可直接执行。你可以使用makecab.exe 创建这两种文件,Windows Mobile SDK 中也有这个工具。我建议使用图形化的WinCAB,虽然后台仍然调用的是makecab.exe

CAB 和 CPF 文件之间的主要区别在于 CPF 在执行期间不会打开任何对警告话框。这也是 CPF 的主要缺陷。除非设备上的安全设置和文件是否已签名策略强制要求。如果打算签署配置文件,请使用 CPF。否则,请使用 CAB。实现任何一个都非常简单,只需将正常的 XML 文件传递至 makecab 并为输出文件适当命名即可。正如所有的cab安装包一样,必须将 XML 文件命名为 _setup.xml。如果您以其他名称命名,makecab 不会有问题,CAB 或 CPF 文件也能正常生成,但当您尝试使用它时将出现含糊错误,导致配置失败。

4、更可以在网站编码中,通过交互实现XML的生成,然后自动化的进行部署。似乎System Center Mobile Device Manager正在做这样的事情,等我有机会测试再进行详细介绍。

这只是对CSP的简单介绍,更多CSP能干的事情,将对具体的CSP对象进行介绍。

发表于 作者 HaoHu | 0 评论

原来不是我RP问题

比较亲近的朋友都知道最近我不太顺利。时间大致是今年,有关的痛苦基本上看看MSN的SubTitle就知道了。。。

在众多的痛苦中,最大的莫过于本子。。。吃饭的家伙啊,如果手机相当于乞丐的打狗棒,被偷了还能勉强讨碗饭吃,那么本子相当于乞丐的饭碗,全指着他干活了。虽说hp发了本子,可是7100+2G+80G,外加诸多Policies,还让人活嘛。

一直以为自己的本子坏的很妖~莫名闪几下,黑掉,再开机,变成中间一条亮线,上下镜像。。。摸爬滚打这么多年,多少知道一点,屏应该没问题,连一个坏点都没有。要不就是排线,要不就是高压条,再不就是显卡芯片和显存。。。首先换了高压条,故障依旧。。。排线看着没啥磨损。。。难道是显卡芯片?

难道我RP不好把显卡用坏了?我也没疯狂的游戏啊。。。

这个事情昨天终于有了答案。。。万恶的NV,竟然在84、86的芯片上有这么大的问题。。。相关链接如下:

http://www.theinquirer.net/gb/inquirer/news/2008/07/09/nvidia-g84-g86-bad

国内的链接只要输入‘dell‘ or ’nv‘ ’显卡问题’就是一堆。。。

Dell官方的解决方案是刷一个新的BIOS,以增加风扇的转速来解决温度对芯片的影响。我已经刷了,不过好像晚了。。。这肯定是大家不能接受的。。。折腾自己的机器以苟延残喘到过保。。。不过还算是有个正面响应了。。。不光是dell,受到影响的应该还有asus、hp、lenovo等等(排名不分先后~)。所以您也不用看着我倒霉偷笑,哈哈。

看见那么多兄弟姐妹被nv的芯片害得这么惨。。。不能就这么算了!!希望国内的受害者能团结起来搞个集体诉讼。

可怜的是我的本子MS没有保。。。天哪。。。

发表于 作者 HaoHu | 2 评论

Dell D630 + ASUS P535 实现的多合一SIM卡

    关键字: Dell D630 / ASUS P535 / Smartcard reader / PCSC / SIM card / Windows

    之前因为想买一张GPRS包月卡在没有LAN、wifi的地方上网,又因为现在D630能用的WWAN卡(就是可以插在d630等机器里面的,空余的Mini PCIExpress槽位的,用于GRPS、EDGE、HSDPA等等的卡)非常的贵,所以心里还是准备用我的P535来进行GPRS通信,因为可以借助蓝牙拨号。

    由此想到来回换卡实在是不能忍受。特别是P535的设计,打开背盖就会切断电源,然后板上的电池也没电了,也就意味着必须重新设置RTC,重设设备时间。因此准备搞一张一卡多号的卡,在需要的时候来回切换。这需要有几个条件:可以读sim卡的设备,可以写sim卡的设备,破解Ki的程序,写卡的程序,手机的stk切换程序,以及一张可以写的sim卡。

    按照我不见兔子不撒鹰的原则,首先准备的是读卡器(实际上和写卡设备是同一个东西),以及破解Ki的程序。我问Simon借来了他的读卡器,然后着手进行Ki的破解。

    我的卡是老卡,即对应了V0版本,首先用的是simscan这个程序,新卡V1可能需要使用woronscan,因为可能不能直接解出8对Ki,需要用woronscan对已解出的Ki进行推算。在用woronscan的时候忽然发现,接口选项居然有PC/SC的字样,pcsc可是微软推广的smartcard接口规范啊,难道?。。。

    试验证明了我的推断,D630的Smartcard reader真的可以用来读写sim卡。于是我换了一个读卡的程序 FD v1.3。它支持pcsc的smartcard。经过近4小时的推算,我的Ki拿到了。于是跑到太和掏出所有的零钱,27块买了一张狗卡(六合一的卡)。等我拿回家忽然发现,写卡的程序大部分只支持串口。。。

    不死心啊。。。搜。。。终于找到完美支持PCSC Smartcard的程序,SimEasy。写入我的ICCID,Ki,SMSP。。。打开手机,换卡,开机。。。就像没换卡一样。进入stk(sim tool kit),可以进行卡号的选择。

   瓦咔咔,等我有空去买张上网包月的gprs卡~

发表于 作者 HaoHu | 0 评论

不抛弃,不放弃的MVPs,一个不成熟的倡议

这几天,一直睡得不好,那些消失的生命,那些倒塌的学校。

今天一个MVP在MSN上给我看了彩虹行动的页面,于是聊了几句,突然,一个想法冒出来了——中国的MVP一起努力,捐出一所MVP学校?

现在中国有现任MVP 217人,当然,还有很多历任的MVP,我想,这是一股不小的力量。我们可能没有什么钱,但是我想如果大家的能力能转换出来,还是很有价值的。

我们能做的,一方面是为灾区提供义务的技术支持和辅导,一方面可以捐点血,当然还可以捐些钱。每个MVP的环境都不一样,还有些MVP在上学。这个倡议并不是强制性的说要捐多少钱,哪怕一块钱,也是一块钱的力量。

我想说的是,大家如果发动起来,可以作一些类似义演的培训、项目、写书、文章等等。这样,我们的能力就能够转化成力量了。

一所MVP学校,并不是为了MVP本身,只是为了体现我们的那个V。

我的想法可能很粗浅,所以没有马上和Eddie、Sisley联系。我想先看看大家的意思,不管您是不是赞成,请给我一个回应。

想想那些可怜的孩子,想想如果是我们自己遇到了灾难。不管此事是不是能做起来,只要大家给我一个回应,就算是想到了那些苦难的同胞,谢谢了~

发表于 作者 HaoHu | 46 评论

大拆解——蓝牙立体声耳机 BT55F

BT55F,蓝牙立体声耳机。让我喜欢的是支持蓝牙2.0,可以同时连接本本和手机。

只可惜转轴设计的太烂,非常容易折断。这已经是换过的了。听辛浩说他换过的耳机都已经断掉了。。。唉,转轴是败笔。

发表于 作者 HaoHu | 3 评论
归档在:
更多内容 下一页 »