适用于:PowerShell 7、Azure 计算机配置
DSC 配置是定义特殊命令类型的 PowerShell 脚本。 若要定义配置,请使用 PowerShell 关键字 configuration
。
Configuration MyDscConfiguration {
Environment FirstEnvironmentVariable {
Ensure = 'Present'
Name = 'Foo'
Value = 'Example'
}
Environment SecondEnvironmentVariable {
Ensure = 'Present'
Name = 'Bar'
Value = 'Another'
}
}
MyDscConfiguration
将脚本另存为 .ps1
文件。
配置语法
DSC 配置脚本包含以下部分:
-
Configuration
块。 这是最外部的脚本块。 使用Configuration
关键字定义它并提供名称。 在这种情况下,DSC 配置的名称MyDscConfiguration
。 - 一个或多个 DSC 资源块。 这是 DSC 配置为其配置的组件定义设置的位置。 在这种情况下,有两个 DSC 资源块。 它们都使用
Environment
DSC 资源。
编译配置
在使用 DSC 配置之前,必须将其编译为 MOF 文档。 为此,可以调用 DSC 配置,就像调用 PowerShell 函数一样。 示例的最后一行(仅包含 DSC 配置的名称)执行 DSC 配置。
注意
若要调用 DSC 配置,必须在当前范围内加载它(与任何其他 PowerShell 函数一样)。 可以通过“点溯”脚本或通过 F5 运行脚本或单击 VS Code 中的 运行脚本 按钮来执行此作。 若要对脚本进行点源,请运行命令 . .\myConfig.ps1
其中 myConfig.ps1
是包含 DSC 配置的脚本文件的名称。
调用 DSC 配置时,它会:
- 在当前目录中创建与 DSC 配置同名的文件夹。
- 在新目录中创建名为
localhost.mof
的文件。
注意
MOF 文件包含系统的所有配置信息。 因此,请务必确保其安全。
在 DSC 配置中使用新的 DSC 资源
如果运行了前面的示例,你可能已注意到你已警告你正在使用资源而不显式导入资源。
可以使用 Get-DscResource cmdlet 来确定系统上已安装哪些资源并可供使用。 即使模块已放置在 $env:PSModulePath
中并且通过 Get-DscResource
进行识别,它们仍需要在 DSC 配置中加载。
Import-DscResource
是一个动态关键字,只能在 Configuration
块中识别。 这不是 cmdlet。
Import-DscResource
支持两个参数:
-
ModuleName 是使用
Import-DscResource
的建议方法。 它接受包含要导入的资源的模块的名称(以及模块名称的字符串数组)。 -
名称 是要导入的资源的名称。 这不是作为
Get-DscResource
返回对象的 Name 属性返回的友好名称,而是定义资源架构时使用的类名(Get-DscResource
返回对象的 ResourceType 属性)。
有关使用 Import-DSCResource
的详细信息,请参阅 使用 Import-DSCResource
重要
计算机配置存在限制,阻止 DSC 资源使用 PowerShell 本身或 PowerShell 库中的模块中不包含的任何 PowerShell cmdlet。 使用一个或多个 Windows 模块 中的 cmdlet 的 DSC 资源在计算机配置中不起作用。