首页 > 解决方案 > azure devops 安装模块时无法安装模块 Azsk CI / CD 管道

问题描述

我在我的 azure devops 管道中实现了 Azsk 在一切正常之前,我可以正常运行管道。我没有改变任何东西,但它给了我这个错误 atm

2018-12-14T10:41:12.7861566Z Installing Module AzSK...
2018-12-14T10:41:58.9483761Z ##[error]Cannot process argument transformation on parameter 'InstalledModuleInfo'. Cannot convert the "System.Object[]" value of type "System.Object[]" to type "System.Management.Automation.PSModuleInfo".
2018-12-14T10:41:58.9850394Z ##[section]Finishing: AzSK_SVTs 

谷歌让我这样做:https ://github.com/Azure/azure-cli/issues/2357 但这将更新我本地机器上的模块,而问题是在我的管道中安装模块(某种azure devops 正在运行的容器)。

最近有人遇到这个问题或知道如何解决这个问题吗?

标签: azureazure-devops

解决方案


来自官方 Azsk GitHub:

错误消息:“PackageManagement\Install-Package:无法处理参数“InstalledModuleInfo”的参数转换...”

如果您已在计算机中使用 Azure SDK 安装了 AzureRM PowerShell,它通常会安装在 Program Files 中。您可以运行以下命令进行确认

Get-Module -Name AzureRM* -ListAvailable 

如果是这种情况,则需要从 Program Files 中完全删除通过 Azure SDK 安装的 Azure PowerShell 模块。如果需要,您也可以备份。AzSK 还需要 AzureRM 模块。但它会从 PSGallery 而不是从 Azure SDK 下载。从 PS Gallery 下载 AzureRM 模块会与通过 Azure SDK 安装的 AzureRM 模块发生冲突。清理后,如果您再次运行以下命令,它将默认将 AzureRM 版本 5.2.0 提取到当前用户范围而不是程序文件中。

Install-Module AzSK -Scope CurrentUser -AllowClobber 

如果您仍需要使用其他版本的 AzureRm(已删除),您可以使用以下命令从 PS Gallery 安装它:

Install-Module AzureRM -Scope CurrentUser -AllowClobber -RequiredVersion <versionNumber e.g. “3.8.0” >

注意:如果“-AllowClobber”选项在您的 PS 版本中不可用,则将其替换为“-Force”

如果您碰巧有多个版本的 AzureRM,那么这取决于在 PS 会话中首先加载的模块版本。在这种情况下,为避免混淆,请关闭安装程序 PS 会话并在新的 PS 会话中首先运行以下命令:

Import-Module AzSK

然后,您可以运行一个或多个 AzSK 命令或其他 AzureRm 命令。“导入模块”确保将正确版本的 AzureRM 加载到当前会话中。

因此,如果您是托管代理,请尝试在 Azsk 任务之前添加 PowerShell 任务并运行上面的命令。


推荐阅读