powershell - 无法在自定义 Azure DSC 模块中找到类型 [CloudFileDirectory] ​​错误 - 相关程序集

标签 powershell azure dsc azure-automation

我已经创建了一个自定义模块作为 PowerShell 类,大致遵循 Writing a custom DSC resource with PowerShell classes 中提供的说明。 。目的是连接到 Azure 文件存储并下载一些文件。我使用 Azure Automation DSC 作为我的拉取服务器。

首先我要说的是,当通过 PowerShell ISE 运行时,代码的工作效果非常好。但是,当我将其上传到 Azure 时,出现了问题 - 我收到错误无法找到类型 [CloudFileDirectory]。此类型说明符来自通过模块 Azure.Storage 引用的程序集,该模块肯定在我的自动化 Assets 列表中。

在我的 psm1 文件的顶部

Using namespace Microsoft.WindowsAzure.Storage.File

[DscResource()]
class tAzureStorageFileSync
{
    ...
    # Create the search context
    [CloudFileDirectory] GetBlobRoot()
    {
        ...
    }
    ...
}

我不确定这种情况下是否支持Using,所以我们称之为问题1

到目前为止我已经尝试过:

  • RequiredModules = @( "Azure.Storage") 添加到 psd1 文件
  • RequiredAssemblies = @( "Microsoft.WindowsAzure.Storage.dll") 添加到 psd1 文件
  • 将实际的 Microsoft.WindowsAzure.Storage.dll 文件发送到我上传的模块 zip 的根目录中(气味难闻)

当我使用 New-AzureRmAutomationModule 将模块部署到 Azure 时,它​​上传和处理得很好。 正在提取事件... 步骤有效且没有错误。

但是,当我编译配置时,编译过程失败,并出现我提到的无法找到类型错误。

我曾考虑在 class 声明上方添加一个 Import-Module Azure.Storage,但我以前从未在其他地方看到过这样做。

问题 2 有没有一种方法可以使用与 Azure DSC 使用的过程类似的过程进行本地编译,以便我可以更快地测试更改?

问题3有人知道这里出了什么问题吗?

最佳答案

问题 1/3: 如果您在 powershell 中创建类并在其中使用其他类,请确保在加载包含新类的脚本文件之前存在这些类。

即: 加载器.ps1:

Import-Module Azure.Storage
. .\MyDSC-Class.ps1

Powershell 检查是否找到您在解释脚本时引用的所有类型,因此必须在此之前加载所有类型。您可以通过创建一个脚本文件来完成此操作,该脚本文件首先加载所有依赖项,然后加载您的脚本。

关于powershell - 无法在自定义 Azure DSC 模块中找到类型 [CloudFileDirectory] ​​错误 - 相关程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40375660/

相关文章:

windows - 如何在启动 powershell.exe 之前设置首选项 `$ErrorView = "CategoryView"`

powershell - 如何使用 Powershell 脚本在 Windows 10 中更改语言/区域和语音

java - Azure Functions - 如何使用默认 `MultipartHttpServletRequest` 方法中的 `run()` 类?

json - 如何使用 JMESPath 列出对象的属性名称?

batch-file - PowerShell 将文件大小显示为 KB、MB 或 GB

c# - Azure 云存储 SDK UploadFromStreamAsync 不起作用

powershell - 在哪里可以找到二进制 DSC 资源的 dll?

azure - 使用 DSC 和 ARM 模板传递凭据并使用 Visual Studio 2017 进行部署

powershell - 术语 'xWebsite' 未被识别为 cmdlet 的名称

windows - Powershell Invoke-WebRequest 一直很慢。我怎样才能解决这个问题?