自动将完整桌面池虚拟机加入到指定OU脚本说明
- Horizon
- 2024-03-19
- 2042热度
- 1评论
需求目的
当我们在配置VMWare Horizon桌面池的时候,自动桌面池,可以在创建的时候,手动指定想要生成的新桌面加入到自定义的OU当中。但是完整桌面池,并不能去手工指定OU,生成的虚拟机不会自动加入到想要指定的OU当中去,而是默认在Computer的OU中,每次都需要手动去调整,非常麻烦。那么如何实现使用Powershell脚本的方式,让虚拟机自动加域并放入到指定的OU当中呢
参考
实现的办法可以参考VMware社区里的这份帖子
修改步骤
我针对这份做了一些修改:使用脚本自动加域后到指定OU,然后删除所有脚本文件,原因是Powershell脚本里,使用了明文存储密码,在加入域后删除脚本文件。
首先,我们需要创建一份批处理bat文件,让它去自动执行powershell脚本,因为VMware自定义规范不能直接运行ps文件
创建批处理文件
批处理bat文件如下
@echo off
::设置脚本批处理bat和Powershell路径及文件名,请将两个文件保存在同一个文件夹中,并且bat和ps1的文件使用相同命名。
set scriptFileName=%~n0
set scriptFolderPath=%~dp0
set powershellScriptFileName=%scriptFileName%.ps1
::执行Powershell自动加域脚本
powershell -Command "Start-Process powershell "-ExecutionPolicy Bypass -NoProfile -NoExit -Command `"cd `"%scriptFolderPath%`"; & `".%powershellScriptFileName%`"`"" -Verb RunAs"
::设置等待时间,让Powershell脚本执行完毕
timeout 60
::设置强制重启虚拟Windows系统,预设60秒后重启。
shutdown -r -f -t 60
::在执行完强制重启操作系统等待时,删除所有脚本文件。注意,路径C:WindowsSetupJoin 为存放bat和ps1的文件的具体路径
timeout 5
del C:WindowsSetupJoin *. * / Q
创建Powershell文件
Powershell脚本文件如下
# 创建凭据对象
$cred = New-Object System.Management.Automation.PSCredential("domain.comdomainadmin", (ConvertTo-SecureString "P@$$w0rd" -AsPlainText -Force))
# 将计算机添加到域
Add-Computer -DomainName "domain.com" -OUPath "OU=ZH-VDI,OU=VDI-WIN10,OU=VMware-View,DC=domain,DC=com" -Credential $cred -Force
#自己把PS1脚本里的ou,domain.com,domaindomainadmin,DC,P@$$w0rd改成自己的域对应的,批处理bat和PS1文件名要相同,双击批处理bat就可以了
新建虚拟机自定义规范文件
新建或者编辑现有的自定义规范
修改自动登录方式
让系统以管理员(Administrator账号)身份自动登陆,输入管理员的密码
设置自动执行一次的命令路径
设置为工作组
让系统登陆后由Powershell脚本执行加域的动作。
桌面池生成的新虚拟机系统,自动登陆并执行脚本加入域
自动加入指定OU成功
自动强制重启虚拟机系统,并删除所有脚本成功。
这个办法比较靠谱,👍