如何解决从 Azure DevOps Pipeline 加载 Az.Kusto 2.0.0 PowerShell 模块时出现问题
要从我们的 Azure DevOps Pipeline 自动配置 Azure 数据资源管理器数据库,我们使用 PowerShell 模块 Az.Kusto。 我们用来执行 KQL 脚本的函数是 New-AzKustoScript,它仅在最新版本的 Az.Kusto 中可用,因此我们将以下指令作为 PowerShell 脚本的一部分运行,该脚本稍后将调用 New-AzKustoScript:
List panCardList = jsonList.where((json) => json['docgroup'] == 'PAN Card');
List otherCardList = jsonList.where((json) => json['docgroup'] != 'PAN Card');
在我的开发机器上本地运行,但是当我们将此脚本作为 Azure DevOps Pipeline 的一部分运行时,我们得到以下异常
Install-Module -Name Az.Kusto -requiredVersion "2.0.0" -Force -Scope CurrentUser -AllowClobber
任何帮助或提示将不胜感激。
更新:
-
在安装失败并显示错误消息之前卸载 Az.Kusto “没有删除任何模块。验证要删除的模块的规范是否正确,并且这些模块存在于运行空间中。”
-
我看到在目录 C:\Modules\az_5.7.0 中安装了 Az.Kusto 1.0.1 版。
-
此外,当我在 2.0.0 版中安装 Az.Kusto 时,此版本会安装在 C:\Users\VssAdministrator\Documents\WindowsPowerShell\Modules
-
当我使用 Scope AllUsers 安装 Az.Kusto 时,模块显示在 C:\Program Files\WindowsPowerShell\Modules 下
-
当我导入模块时,通过指定所需版本或传递 -Name 和路径 (Import-Module -Name "C:\Program Files\WindowsPowerShell\Modules\Az.Kusto\2.0.0 \Az.Kusto.psm1" -Force -Global) 我得到同样的错误。
-
模块 Az.Accounts 安装在目录 C:\Modules\az_5.7.0 中,版本 2.3.0
-
我们在与 Install-Module 和 Import-Module 调用不同的 PowerShell 脚本中调用 New-AzKustoScript。这可能是一个问题吗?
解决方法
在评论中添加另一个步骤,试试:
# Unload existing version and reinstall without clobber - removing the module should remove overlaps
Remove-Module Az.Kusto
Install-Module -Name Az.Kusto -RequiredVersion "2.0.0" -Force -Scope CurrentUser
Import-Module Az.Kusto
2.0.0 版中的一个更新是需要一个略有不同的 Az.Accounts 版本,所以也请检查一下:
RequiredModules = @(@{ModuleName = 'Az.Accounts'; ModuleVersion = '2.2.8'; })
以下是针对笨拙的 powershell 模块的一些故障排除步骤。导入模块后,将您在 azure 上获得的输出与您的开发机器进行比较:
# Check the loaded module:
Get-Module Az.Kusto | FL Name,Version,Path,# On your local,try finding the missing type and the dll loading it:
[Microsoft.Azure.PowerShell.Cmdlets.Kusto.Models.Api202101.IOperation]|fl Name,Module
您可以通过 Import-Module /azure/module/path/to.dll
手动导入任何丢失的 dll。或者,您可能会发现由于整体 az.Kusto
模块抑制的某些错误而无法导入该 dll。
无论哪种方式,您都可能想尝试联系模块创建者 - 版本 2.0.0 还不到 3 周,并且存在一些其他已知问题:https://github.com/Azure/azure-powershell/issues?q=is%3Aissue+is%3Aopen+kusto
,在新的空 DevOps 管道中隔离情况后,我找到了邪恶的根源。
在安装和导入 Az.Kusto 之前,导致所有麻烦的这个调用在哪里:
Import-Module Az
删除后,调用成功
Install-Module -Name Az.Kusto -RequiredVersion "2.0.0" -Force -Scope CurrentUser
Import-Module Az.Kusto -RequiredVersion "2.0.0" -Force
从而提供对 New-AzKustoScript Cmdlet 的访问。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。