WDS+MDT网络启动自动部署windows(十七)MDT中文变量,描述,组织单位OU

news/发布时间2024/5/20 10:15:21

简介

这简直就是歧视,在MDT使用变量时,数据库设置时,居然不能用中文。

计算机描述,我将在数据库中设置为使用人,主要是其他地方也不方便看。

描述是存在注册表中的,未来自动化也将会使用使用人这个字段,用来注册OCS这样,有标签,使用人字段的软件。

方向

解决MDT/BDD无法加入带中文名称的OU问题_xmuxsp的技术博客_51CTO博客

刚开始接触BDD 2007的时候,就知道BDD 2007有个bug,加域时可以选择加入指定的OU,但这个OU名称是不能包含中文的。因为包含中文名称的OU,在实际展现时会显示为乱码。
实际上不止是machineobjectOU这个变量,所有的变量,只要是涉及双字节字符,都会显示为乱码。
最近突然心血来潮,想趁着学习脚本的劲头,把这个问题解决了。
问题在哪里?
粗略分析了一下,MDT里的变量都保存在variables.dat中,这其实是一个XML文件,由ztigather.wsf这个脚本生成和更新。生成后,Wizard.hta再读取variables供各个脚本调用——用写字板打开这个文件,会发现所有中文都是乱码,如果我中断期间的过程,手动修改Variables.dat纠正乱码,是可以正常识别的——所以我判断问题出在Variables.dat中的乱码。
刚开始我认为乱码是发生在写入时,比如写入函数将错误的编码过的中文字符串写入了XML文件中。但我发现用Notepad++或者记事本打开有乱码的Variables.dat,乱码是能够被正确识别并显示为中文的。于是我怀疑并不是写入函数的问题,而是文件本身编码的问题。
询问了小顾,xml文件只能是由ansi进行编码(GB2312),而在Notepad++右下的编码信息里,显示的是ansi with utf-8,也就是说这个文件被识别为用utf-8编码,莫非是这个问题?
于是我单独测试了一下,验证得知确实是这个问题,如果我强制转换编码为Gb2312后,用写字板打开variables.dat看到的也是正确的中文了
如何修改代码?
因为我之前完全没有系统学习vbscript,这次修改代码闹了不少笑话......好在都解决了
我的思路很简单,在ztigather收集完数据后,强制转换variables.dat的编码,由于是紧密相连的,就没有将转换的脚本独立出来,而是直接黏在了ztigather.wsf的屁股上。这里我借用了别人的代码,生命一下.....
在附件里把修改后的ztigather.wsf附上,以免日后自己都忘记了
-----------------------------------
©著作权归作者所有:来自51CTO博客作者xmuxsp的原创作品,请联系作者获取转载授权,否则将追究法律责任
解决MDT/BDD无法加入带中文名称的OU问题
https://blog.51cto.com/xmuxsp/284813

很久以前的贴子了,复制一份吧。免得丢了。

设置OU=技术部,尝试解决问题。

解决过程

查日志

配置mdt记录日志到共享目录,但是日志里面没有variables.dat。

打断点

这次尝试bat断点

 错误提示是这样的,提示我加入域4次失败,停在了pause任务。挺好。

 定位故障

居然还是没有variables.dat

 就在recover join domain上下附近,反复打断点,甚至在 recover join domain任务执行时,我终于将一个8k大小的variables.dat,放入了日志目录,MDT时,可以对设置的远程日志目录进行读写。

具体怎么弄出来,我也就不去复现了。

查看故障

为了查看故障以及修复故障,我考虑在MDT安装环境中对故障进行修复。所以又是断点,一般都在State Restore任务组中。

中断以后,复制variables.dat到C盘根目录,我随便改了个名。

用记事本打开。寻找ouname

 找了个乱码恢复网站

 

 查到了原有编码和正确编码,至于搜到的GB2312,还真不算对。

解决方案

经过AI,QQ群友的帮助,写了这么个wsf脚本。

<?xml version="1.0" encoding="utf-8"?>
<job id="test"><script language="VBScript"><![CDATA[strVarFilePath1 = "C:\VARIABLEStag.DAT"strVarFilePath2 = "C:\VARIABLESout.DAT"str=ReadFile(strVarFilePath1, "UTF-8")WriteToFile  strVarFilePath2, Str, "windows-1252"Function ReadFile(FileUrl, CharSet)Dim StrSet stm = CreateObject("Adodb.Stream")stm.Type = 2stm.mode = 3stm.charset = CharSetstm.Openstm.loadfromfile FileUrlStr = stm.readtextstm.CloseSet stm = NothingReadFile = StrEnd FunctionFunction WriteToFile (FileUrl, Str, CharSet)Set stm = CreateObject("Adodb.Stream")stm.Type = 2stm.mode = 3stm.charset = CharSetstm.Openstm.WriteText Strstm.SaveToFile FileUrl, 2stm.flushstm.CloseSet stm = NothingEnd Function]]></script>
</job>

用utf-8读VARIABLEStag.DAT,重新编码为windows-1252,并写入VARIABLESout.DAT,执行代码后,乱码修复了。

 解决方法

我也找了几遍,并没有找到合适的地方插入一个任务来修复文档编码,只好学习方向中前辈的方法,直接黏在了ztigather.wsf的屁股上。

由于这个wsf,上面已经引入了ZTIUtility.vbs,所以我们将使用变量来定义这个文件路径,测试已经通过,则读文件和覆写文件将是同一个文件。

放在End Class  和 </script>之间。

 测试

我相信这将同时解决所有的中文变量问题,也就是说描述和组织单位都将适用。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ulsteruni.cn/article/12474480.html

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

WDS+MDT网络启动自动部署windows(十六)计算机自动进入指定OU

简介 新装计算机总是在默认电脑,不方便配置终端计算机策略权限。 要想办法让MDT装好的计算机,自动进入指定组织单位OU。 dsquery 大概意思是 domain server query ,就是域服务器搜索的意思。 在域控执行 dsquery ou 先看看OU是怎么用LDAP表示的。 从左到右,OU,逐级的组…

OpenVX技术图例(二)

OpenVX技术图例(二) 参考文献链接 https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/latest/exports/docs/tiovx/docs/user_guide/index.html人工智能芯片与自动驾驶

Linux Shell 脚本专题

本文介绍了Linux Shell环境变量和脚本使用的常用知识点。V1.0 2024年5月8日 发布于博客园目录常用环境变量一、环境变量的概念1、环境变量的含义2、环境变量的分类3、Linux环境变量二、常用的环境变量1、查看环境变量2、常用的环境变量三、设置环境量1、系统环境变量2、用户环境…

注册表延长Windows更新时间

打开注册表【Win】+【R】打开运行窗口输入regedit在输入框中输入计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings后回车在右侧空白处选择新建->DWORD(32位)值(D)命名为FlightSettingsMaxPauseDays,选中10进制数据数值为暂停更新的天数。 确定后关…

El-Upload组件上传图片并添加水印

背景 有的时候我们需要在上传图片中添加一些水印标识,然后上传至服务器 效果图代码 <template><div class="app"><!-- 需求:1. 点击直接预览图片,而不需要使用dialog2. 上传图片添加水印后才预览图片思路:上传图片文件添加水印。使用watermark…

Windows平台git clone文件路径太长报错

解决文件路径太长导致的报错问题问题描述 在Windows下拉取一些比较大的开源项目经常会提示文件路径太长(filename too long),然后死活都不成功 解决办法 1.配置git git config --system core.longpaths true2.修改文件C:\Program Files\Git\etc\gitconfig(需要以管理员身份…