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

如何在PowerShell中实现Windows注册表等待循环适配Intune部署

PowerShell等待注册表条件触发程序部署(Intune场景)

问题背景

在Intune环境中通过PowerShell部署程序时,使用常规的-Wait参数会导致进程挂起,因此需要实现一个等待循环:当注册表项HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{AA3C5F33-570B-3989-8542-D5DC0F759221}的DisplayVersion值等于21.1.21.45时,执行指定的安装程序。

原脚本问题分析

用户提供的脚本存在以下关键问题:

  • 注册表路径未明确指定根键(默认读取当前用户注册表,访问本地机器注册表需显式声明)
  • Get-ItemProperty参数错误:误将目标版本值作为属性名传入,正确应指定属性名为DisplayVersion
  • 拼写错误:Lenght应为Length,且判断逻辑错误,需对比属性值与目标版本是否一致
  • 外部程序调用语法错误:使用&调用时不能搭配-ArgumentList参数,需调整参数传递方式

修正后的脚本

# 目标注册表项路径(明确指定本地机器根键)
$regPath = 'Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{AA3C5F33-570B-3989-8542-D5DC0F759221}'
# 需要匹配的DisplayVersion值
$targetVersion = '21.1.21.45'
# 循环控制标志
$waitForCondition = $true
# 最大等待次数(避免无限循环,可根据需求调整)
$maxAttempts = 40
$currentAttempt = 0

do {
    $currentAttempt++
    # 获取注册表项的DisplayVersion属性
    $regProperty = Get-ItemProperty -Path $regPath -Name DisplayVersion -ErrorAction SilentlyContinue

    # 判断属性存在且值匹配目标版本
    if ($regProperty -and $regProperty.DisplayVersion -eq $targetVersion) {
        # 执行安装程序,正确传递参数
        Start-Process -FilePath "C:\Autodesk\{D138465E-4098-4F01-B453-1C4BEADE75D8}\image\installer.exe" `
            -ArgumentList "-i deploy --offline_mode -o C:/Autodesk/{D138465E-4098-4F01-B453-1C4BEADE75D8}/image/Collection.xml --installer_version 1.35.0.9" `
            -Wait -NoNewWindow
        $waitForCondition = $false
        Write-Host "满足条件,已执行安装程序"
    }
    else {
        # 未满足条件,等待15秒后重试
        if ($currentAttempt -lt $maxAttempts) {
            Write-Host "未满足条件,15秒后重试(第$currentAttempt/$maxAttempts次)"
            Start-Sleep -Seconds 15
        }
        else {
            # 达到最大重试次数,退出循环
            Write-Host "达到最大重试次数,未满足条件,退出循环"
            $waitForCondition = $false
        }
    }
} while ($waitForCondition)

关键说明

  • 使用Registry::前缀明确指定本地机器注册表路径,确保在系统上下文(Intune部署常用)下能正确读取
  • 添加最大重试次数限制,避免脚本无限等待
  • 使用Start-Process搭配-Wait和-NoNewWindow参数,确保安装程序执行完成后再继续,同时避免弹出额外窗口
  • 增加日志输出,便于排查部署过程中的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:25:39