Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 未在Azure Automation中导出复合DSC资源_Powershell_Azure Automation_Dsc - Fatal编程技术网

Powershell 未在Azure Automation中导出复合DSC资源

Powershell 未在Azure Automation中导出复合DSC资源,powershell,azure-automation,dsc,Powershell,Azure Automation,Dsc,我正在尝试构建我的第一个复合DSC资源模块,以便在Azure Automation中使用,就我的一生而言,我无法理解我忽略了什么愚蠢的事情,它阻止了我的DSC资源被导出,或者在我创建的测试配置中可用。我的第一次尝试是大而奇特的,有params并导入了其他数据源,非常棒,令人印象深刻,根本不起作用 因此,我决定使用我的非复合配置中的代码块创建一个超级简单的配置,这一切都很好。我压缩了下面列出的所有内容,将其导入我的Azure自动化模块,并且没有导出任何活动。没有错误,似乎没有什么不开心,但什么都没

我正在尝试构建我的第一个复合DSC资源模块,以便在Azure Automation中使用,就我的一生而言,我无法理解我忽略了什么愚蠢的事情,它阻止了我的DSC资源被导出,或者在我创建的测试配置中可用。我的第一次尝试是大而奇特的,有
param
s并导入了其他数据源,非常棒,令人印象深刻,根本不起作用

因此,我决定使用我的非复合配置中的代码块创建一个超级简单的配置,这一切都很好。我压缩了下面列出的所有内容,将其导入我的Azure自动化模块,并且没有导出任何活动。没有错误,似乎没有什么不开心,但什么都没有发生。模块已列出,但它不做任何操作

对其运行测试配置失败,表示无法导入模块DefaultEnvironment,请尝试导入模块

我尝试了以下两种配置,但均因相同原因失败:

configuration testdscconfig {
    Import-Module TestDSC
    Import-DscResource -Name DefaultRegistry
    Import-DscResource -Name DefaultEnvironment

    node localhost {
        DefaultEnvironment SetDefaultEnvironment {}
        DefaultRegistry SetDefaultRegistry {}
    }
}

我的复合DSC配置的结构如下:

TESTDSC
│   TestDSC.psd1
│   TestDSC.psm1
│
└───DSCResources
    ├───DefaultEnvironment
    │       DefaultEnvironment.psd1
    │       DefaultEnvironment.schema.psm1
    │
    └───DefaultRegistry
            Defaultregistry.psd1
            DefaultRegistry.schema.psm1
TestDSC.psm1是一个空文件。TestDSC.psd1包含:

 @{  
    RootModule = "TestDSC.psm1"
    ModuleVersion = '0.0.8'
    GUID = <GUID>    
    Author = 'RobbieCrash'    
    CompanyName = 'Noncorp'
    
    # DSC resources to export from this module
    DscResourcesToExport = @(
        'DefaultEnvironment' 
        'DefaultRegistry'
    )
}
DSCResources\DefaultRegistry\DefaultRegistry.schema.psm1:

Configuration DefaultRegistry {
    Registry SecureDotNetCryptox64 {
        Ensure              =   "Present"
        Key                 =   "HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NetFramework\v4.0.30319\"
        ValueName           =   "SchUseStrongCrypto"
        ValueData           =   "1"
    }

    Registry SecureDotNetCryptox86 {
        Ensure              =   "Present"
        Key                 =   "HKLM:\SOFTWARE\Microsoft\.NetFramework\v4.0.30319"
        ValueName           =   'SchUseStrongCrypto' 
        ValueData           =   '1'
    }
}
DefaultEnvironment的设置是相同的,带有一个看似无害的配置块。删除一个或另一个都没有区别,编译失败,并且不会导出任何资源

我已经尝试将
RootModule=
设置为
“\Resource.schema.psm1”
“Resource.schema.psm1”
,验证了案例,验证了代码中没有任何不可靠的内容,或者输入错误,等等


我敢肯定,我遗漏了一些重要的细节,但在阅读了20篇不同的文章和StackExchange/相关线程之后,我坐在这里呆呆地看着我必须遗漏的内容。

结果表明,要正确检测,资源的清单实际上需要是完整的清单,不仅仅是存根条目
RootModule=“module”

哪些州是必需的,而我是个懒惰的白痴。:)

从上面开始,我做了一些测试,最低要求是定义
RootModule
ModuleVersion
,因此
DefaultRegistry.psd1
可以是:

@{
  RootModule    = 'DefaultRegistry.schema.psm1'
  ModuleVersion = '1.0.0'
}
Configuration DefaultRegistry {
    Registry SecureDotNetCryptox64 {
        Ensure              =   "Present"
        Key                 =   "HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NetFramework\v4.0.30319\"
        ValueName           =   "SchUseStrongCrypto"
        ValueData           =   "1"
    }

    Registry SecureDotNetCryptox86 {
        Ensure              =   "Present"
        Key                 =   "HKLM:\SOFTWARE\Microsoft\.NetFramework\v4.0.30319"
        ValueName           =   'SchUseStrongCrypto' 
        ValueData           =   '1'
    }
}
@{
  RootModule    = 'DefaultRegistry.schema.psm1'
  ModuleVersion = '1.0.0'
}