使用SCClient PowerShell模块安装更新时遇类型转换错误求助
解决SCClient安装单个更新的类型转换错误
问题根因
Get-SCCLientPendingUpdate | Select-Object UpdateID返回的是包含UpdateID属性的PSObject对象数组,而Start-SCClientInstallUpdates的-updateid参数要求传入字符串类型的数组,直接传$ids[0]会把PSObject对象传入,触发类型转换失败的错误。
正确解决方案
1. 提取纯字符串格式的UpdateID数组
修改获取更新ID的命令,用-ExpandProperty直接提取UpdateID的字符串值,得到纯字符串数组:
$ids = Get-SCCLientPendingUpdate *server* | Select-Object -ExpandProperty UpdateID
此时$ids的内容为纯字符串:
Site_siteid/SUM_446bbb5d-743f-486c-94dc-61c3dce48e75 Site_siteid/SUM_f444ac52-95a6-4a47-95bb-51c2694120fb Site_siteid/SUM_426ce60a-8e6e-4c8d-ae46-a1329b0b6b2c
2. 安装单个更新
直接传入单个字符串元素(参数支持数组格式,单个元素也符合要求):
Start-SCClientInstallUpdates *server* -updateid $ids[0]
备选验证方案(若上述仍有问题)
显式将单个ID包装为字符串数组传入:
$targetId = @($ids[0]) Start-SCClientInstallUpdates *server* -updateid $targetId
或直接提取第一个更新的ID:
$singleId = Get-SCCLientPendingUpdate *server* | Select-Object -First 1 -ExpandProperty UpdateID Start-SCClientInstallUpdates *server* -updateid $singleId
内容的提问来源于stack exchange,提问作者lucky255
相关产品推荐
相关产品推荐

