我可以在非常基础的层面上获得复合资源(感谢this SO question,this SO question,this MSDN blog和the DSC e-book)。我遇到的问题是每当我使用必须使用Import-DscResource
cmdlet的资源时,复合资源就会停止工作。
我已经阅读了我在复合资源上可以找到的所有信息,我无法弄清楚为什么会发生这种情况。以下是我尝试开始工作的资源示例,首先是模块目录结构:
C:\Program Files\WindowsPowerShell\Modules\TestComposite
TestComposite.psd1
DSCResources
TestResource
TestResource.schema.psm1
TestResource.psd1
TestComposite.psd1
@{
ModuleVersion = '1.0'
GUID = '996a9793-dae7-4c25-8fb5-d3fad094d358'
Author = 'Joseph Alcorn'
CompanyName = 'unknown'
Copyright = '(c) 2014 Joseph Alcorn. All rights reserved.'
Description = 'Composite DSC Resource Test'
FunctionsToExport = '*'
CmdletsToExport = '*'
VariablesToExport = '*'
AliasesToExport = '*'
}
TestResource.psd1
@{
RootModule = 'TestResource.schema.psm1'
ModuleVersion = '1.0'
GUID = '38ca17b0-7d69-4ad5-bb75-fe4de22290d
Author = 'Joseph Alcorn'
CompanyName = 'unknown'
Copyright = '(c) 2014 Joseph Alcorn. All rights reserved.'
Description = 'Composite DSC Resource Test'
FunctionsToExport = '*'
CmdletsToExport = '*'
VariablesToExport = '*'
AliasesToExport = '*'
}
如果我的TestResource.schema.psm1
内容为此,则会识别复合资源并且一切正常。
Configuration TestResource
{
param
(
[Parameter(Mandatory=$true)]
[string]
$IPAddress
)
File TestFile1
{
DestinationPath = "C:\TestFile.txt";
Contents = $IPAddress
}
}
只要我将配置更改为此配置,Get-DscResource
就不会再识别它,任何尝试使用它的配置都会出错。
Configuration TestResource
{
param
(
[Parameter(Mandatory=$true)]
[string]
$IPAddress
)
Import-DscResource -ModuleName xNetworking
xIPAddress IPAddress
{
IPAddress = $IPAddress
InterfaceAlias = "Ethernet"
DefaultGateway = "192.168.0.1"
SubnetMask = "255.255.0.0"
AddressFamily = "IPv4"
Ensure = "Present"
}
}
现在,我安装了DSC Resource Kit wave 1-3并且可以使用它们,我可以毫无问题地使用它们,事实上我使用xNetworking
资源创建了一个没有问题的配置。当TestResource.schema.psm1
文件设置为上述内容时,系统不再将其视为有效资源(Get-DscResource
不再列出该文件)。
如果我删除Import-DscResource
行,但保留其他所有内容,它会识别资源,但资源不可用,因为它不知道在哪里可以找到xNetworking模块。我尝试将Import-DscResource -ModuleName xNetworking
放在配置.ps1
中,希望导入会逐渐减少,但仍然没有运气。
我是否遗漏了文档中的某些内容,表明复合资源无法使用Import-DscResource
cmdlet?如果你不能在其中使用其他自定义资源,我就不太了解复合资源。
答案 0 :(得分:2)
xNetworking
拼错为xNetwroking
。修正了愚蠢,我解决了我的问题。