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