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

news/2024/10/3 10:38:44

简介

这简直就是歧视,在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.ryyt.cn/news/29203.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

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人工智能芯片与自动驾驶

(7)ram ip使用

一、ram相关介绍 本实验使用一个控制模块对ram ip进行控制(本质上是三个计数器) 二、ip使用 在界面中选择IP catalog,搜索block,选择底下这个,双击即可生成ram的ip下面进行一些ram资源的配置 配置好后点击ok,生成ip,可以在这里看到已经生成好了: 这里点开这个.veo文件,…

一文搞懂 ARM 64 系列: ADC

一文搞懂 ARM 64 系列: ADC1 指令语法 adc <Xd>, <Xn>, <Xm>2 指令语义 adc就是带「进位」加法,指令中的c就是英文carry。 整个指令等价于: (Xd, _) = Xn + Xm + PSTATE.C也就是将寄存器Xn,寄存器Xm,PSTATE中的「进位」标志相加,将相加的结果写入寄存器X…

Linux Shell 脚本专题

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

OpenDiary 24.5

我去!五月了我去!五月了 一亿年没更日寄了pixiv 100277433四月后日谈 鉴于整个四月基本没记日记,有必要开展一次考古活动 因为考古是比较困难的事情,所以想到什么就写什么了打了一整月的 p5r,四月下旬全都在高强度 p5r,每天都情不自禁打很长很长时间 一个月打了 93h 之多…

第八章——软件工程基础知识

软件工程概述,软件开发模型,软件开发方法,需求分析,系统设计,系统测试,软件开发项目管理,软件质量,软件度量第八章——软件工程基础知识 软件工程概述 软件开发模型 软件开发方法 需求分析 系统设计 系统测试 软件开发项目管理 软件质量 软件度量

Linux 中如何设置每个特定的时间执行特定的程序

那会突然想到一个问题,如何每隔一段时间执行特定的程序。想到了如下的一种方法: 测试如下: 一个小问题,比如 每隔5秒统计一个特定文件的行数 001、[b20223040323@admin1 test]$ ls false.gff pan.fna pan.fna.fai record.sh true.gff variable.gff x_variable_protei…