使用Azure PowerShell添加KB排除项:显示异常与有效性确认
问题解答:Azure自动化更新配置排除KB显示与生效验证
核心结论
GUI中排除KB显示在同一行是正常UI渲染差异,不影响排除规则生效;但你的代码存在格式转换错误,需调整参数传递方式确保后台正确识别多个KBID。
1. 显示差异的原因
Azure自动化GUI手动添加排除项时,会自动将每个KBID拆分行展示;而通过PowerShell提交时,若传递的是逗号分隔字符串或正确数组,后台会正确解析为多个排除项,但UI会直接展示原始输入格式(如逗号分隔的一行)。本质上后台存储的是数组结构,显示格式不影响功能。
2. 你的代码错误点
你在处理$excludedKBs时,错误地将数组转换为了单个字符串(比如把["4476698","4506163"]转成了"4476698 4506163"),导致后台无法正确识别为多个排除项。正确做法是保留数组类型,不要强制转为[string]。
修正后的代码示例
# 从MSSQL获取原始格式 $excludedKBs = "KB4476698-KB4506163-KB4339279" # 处理为纯数字的字符串数组(去掉KB前缀,按-分割) $excludedKBArray = $excludedKBs.Replace("KB","").Split("-") # 调用命令时直接传递数组,不要加引号 New-AzAutomationSoftwareUpdateConfiguration -ResourceGroupName $ResourceGroupName ` -AutomationAccountName $AutomationAccountName ` -Schedule $schedule ` -Windows ` -NonAzureComputer $AdFqdn ` -IncludedUpdateClassification $UpdateType ` -ExcludedKbNumber $excludedKBArray ` -Duration $duration ` -RebootSetting Always ` -PreTaskRunbookName $PreScript ` -PreTaskRunbookParameter $PreScriptParams ` -PostTaskRunbookName $PostScript ` -PostTaskRunbookParameter $PostScriptParams | Out-Null
3. 验证排除项是否生效
通过PowerShell验证后台存储:
$config = Get-AzAutomationSoftwareUpdateConfiguration -ResourceGroupName $ResourceGroupName -AutomationAccountName $AutomationAccountName $config.ExcludedKbNumber输出应为每个KBID单独一行,说明后台已正确识别为数组。
通过作业日志验证执行效果:
运行更新部署后,查看作业日志,搜索关键词Excluded KB numbers,确认列出的KBID与你设置的一致,且对应补丁不会被安装。
内容的提问来源于stack exchange,提问作者Dragonsys
相关产品推荐
相关产品推荐

