从 Azure DevOps Pipeline 加载 Az.Kusto 2.0.0 PowerShell 模块时出现问题

如何解决从 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?