WDS+MDT网络启动自动部署windows(十三)骚操作,修改MDT数据库,使用变量设置计算机描述
简介#
我正在努力尝试将一个被取消的功能重新实现。
在mdt安装时,为计算机添加计算机描述,它将是未来一些自动化操作的变量,如使用人参数。
MDT 2010 - Setting the Computer Description in AD without a webservice - Deploy Vista
在 MDT 部署期间在 Active Directory 中设置计算机描述 – GivingSomethingBack (maikkoster.com)
MDT 提示输入计算机描述的脚本 - 软件 - Spiceworks 社区
对我的帮助不大。并没有完整实现我的需求。深挖MDT文档,我找到了这个
引用CustomSettings.ini文件中的新列 | Microsoft Learn
初看起来就是我需要的。还想过做IIS,web查询MDT数据库这种曲线救国的方法呢。
修改表#
修改表 | Microsoft Learn#
似乎我不需要修改表。
这有描述字段,我们去看看数据库是什么样的。在表Computerldentity中。
修改和刷新依赖视图#
navicat#
右键--设计视图,照猫画虎,添加描述字段
重新打开视图,已经可以看到描述字段被读出来了。
SSMC#
右键--视图dbo.ComputerSettings--设计,勾选ci小窗口DEScription
右键--视图dbo.ComputerSettings--选择前1000行
横向滚动条,拉到最右边。
高级#
看到上面s的小窗口了么?
你还可以继续自定义表ComputerIdentity、Settings,然后修改视图ComputerSettings。
ComputerIdentity的ID,对应的应该是Settings的ID。也可以直接在MDT数据库新建Computer,再来修改。
未来将可以使用python等自动化工具来链接sql数据库,对所有的设置项进行自动化处理。
引用CustomSettings.ini文件中的新列#
引用CustomSettings.ini文件中的新列 | Microsoft Learn
它示例是根据地点来筛选防病毒服务器。
看看我们的是什么。
自动生成的是根据 UUID,AssetTag,SerialNumber,MacAddress,满足最后一个条件来筛选。看起来我们已经获取这个表了。
它直接Properties=AVserver,我怎么办呢?我这是Properties=MyCustomProperty。
MDT部署双硬盘选择 - momingliu11 - 博客园 (cnblogs.com)
这篇博文写了逗号分隔的多个变量,
照猫画虎,再添加一个变量Description。
我们已经修改过视图了。计算机名和描述都在一个查询里面,那么调用方式因该是一样的。
尝试使用变量#
经bing copilot 帮助写了个改计算机描述的wsf脚本。
<?xml version="1.0" encoding="utf-8"?> <job> <script language="VBScript"> <![CDATA[ ' 修改本地计算机描述的 VBScript 脚本 ' 请将 "NewDescription" 替换为你想要设置的新描述 Const HKEY_LOCAL_MACHINE = &H80000002 strComputer = "." ' 创建 WMI 对象以与系统交互 Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv") ' 设置注册表路径和值名称 strKeyPath = "System\CurrentControlSet\Services\lanmanserver\parameters" strValueName = "srvcomment" ' 新的计算机描述 strNewDescription = "NewDescription" ' 设置计算机描述 objRegistry.SetStringValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, strNewDescription WScript.Echo "计算机描述已成功设置为: " & strNewDescription ]]> </script> </job>
一点小问题是,没有使用变量,翻查其他脚本,及多次实验,最终脚本是这样的。注意src路径,我是放在script/custom/目录下,如果你放scrtip目录,就删掉..\
<?xml version="1.0" encoding="utf-8"?> <job> ' 这里增加一行,引入上级目录的ZTIUtility.vbs文件 <script language="VBScript" src="..\ZTIUtility.vbs"> <script language="VBScript"> <![CDATA[ ' 修改本地计算机描述的 VBScript 脚本 ' 请将 "NewDescription" 替换为你想要设置的新描述 Const HKEY_LOCAL_MACHINE = &H80000002 strComputer = "." ' 创建 WMI 对象以与系统交互 Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv") ' 设置注册表路径和值名称 strKeyPath = "System\CurrentControlSet\Services\lanmanserver\parameters" strValueName = "srvcomment" ' 新的计算机描述(注释掉) ' strNewDescription = "NewDescription" ' 使用变量设置计算机描述 strNewDescription = oEnvironment.Item("Description") ' 设置计算机描述 objRegistry.SetStringValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, strNewDescription ' 注释这行,它是提示窗口 ' WScript.Echo "计算机描述已成功设置为: " & strNewDescription ]]> </script> </job>
设置任务Command line,放在state restore之中,我也试了放postinstall,无效,具体为什么就不知道。
完美实现MDT安装时设置计算机描述,为下一步autoit,自动安装需要参数的软件提供了基础。
中文描述#
这里还有个问题,计算机描述设置为中文时,会出现乱码,这是微软的歧视么?据说双字节字符的所有语言都受影响。
经多次尝试,需要改编码。
又去嫖了大佬的代码
这样使用
使用新的设置描述脚本,在debug中断时,可以完美设置中文计算机描述。
所以有个msgBox WScript.Echo,临时测试用。已注释
作者:上官飞鸿
出处:https://www.cnblogs.com/jackadam/p/18172534
版权:本作品采用「知识共享-署名-非商业性-禁止演绎(CC-BY-NC-ND)」许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战