You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell或CLI连接Horizon ADAM LDAP数据库批量改属性?

用PowerShell批量修改VMware Horizon ADAM LDAP中的虚拟机池删除策略

核心步骤与代码示例

你可以通过PowerShell内置的DirectoryServices组件直接操作ADAM LDAP,完全替代adsiedit手动操作,以下是完整的批量修改流程:

  1. 建立ADAM LDAP连接
    替换<ADAM服务器地址>:<端口>为你的Horizon ADAM实例地址(默认端口389,SSL加密用636),<域\用户名>和<密码>为拥有ADAM修改权限的账号:
# 初始化LDAP连接参数
$adamServer = "LDAP://<ADAM服务器地址>:<端口>"
$credentials = New-Object System.Management.Automation.PSCredential("<域\用户名>", (ConvertTo-SecureString "<密码>" -AsPlainText -Force))
# 建立连接
$adamEntry = New-Object System.DirectoryServices.DirectoryEntry($adamServer, $credentials.UserName, $credentials.GetNetworkCredential().Password)
  1. 查询所有虚拟机池对象
    精准过滤出Horizon虚拟机池对应的LDAP对象,并加载需要的属性:
# 创建LDAP搜索器
$searcher = New-Object System.DirectoryServices.DirectorySearcher($adamEntry)
$searcher.Filter = "(objectClass=pae-VmPool)"
$searcher.PropertiesToLoad.AddRange(@("distinguishedName", "pae-VmDeletePolicy"))
# 执行查询
$poolResults = $searcher.FindAll()
  1. 批量修改删除策略
    循环遍历所有池对象,将pae-VmDeletePolicy属性切换为DeleteOnUse或Never,按需选择:
# 设置目标策略(二选一)
$targetPolicy = "DeleteOnUse"
# $targetPolicy = "Never"

foreach ($pool in $poolResults) {
    $poolEntry = $pool.GetDirectoryEntry()
    # 输出当前池信息(可选,用于验证)
    Write-Host "处理池: $($pool.Properties["distinguishedName"])"
    Write-Host "原策略: $($pool.Properties["pae-VmDeletePolicy"])"

    # 执行修改并保存
    $poolEntry.Properties["pae-VmDeletePolicy"].Value = $targetPolicy
    $poolEntry.CommitChanges()

    Write-Host "已更新为: $targetPolicy`n"
}

关键注意事项

  • 操作前务必备份ADAM数据库,避免误操作导致Horizon服务异常
  • 先测试单个池的修改(比如在循环中添加过滤条件指定某一个池),确认生效后再批量执行
  • 如果使用SSL连接,将LDAP://替换为LDAPS://,并确保ADAM服务器的SSL证书有效
  • 执行账号需要拥有ADAM中虚拟机池对象的写入权限

内容的提问来源于stack exchange,提问作者Val

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 13:32:43