DSC 配置
适用于:PowerShell 7,Azure Automanage 的计算机配置功能
DSC 配置是定义特殊类型的命令的 PowerShell 脚本。 若要定义配置,请使用 PowerShell 关键字 (keyword) configuration
。
Configuration MyDscConfiguration {
Environment FirstEnvironmentVariable {
Ensure = 'Present'
Name = 'Foo'
Value = 'Example'
}
Environment SecondEnvironmentVariable {
Ensure = 'Present'
Name = 'Bar'
Value = 'Another'
}
}
MyDscConfiguration
将脚本保存为 .ps1
文件。
配置语法
DSC 配置脚本由以下部分组成:
- 块
Configuration
。 这是最外层的脚本块。 使用 关键字 (keyword) 定义它Configuration
并提供名称。 在这种情况下,DSC 配置的名称为MyDscConfiguration
。 - 一个或多个 DSC 资源块。 DSC 配置在此处定义要配置的组件的设置。 在本例中,有两个 DSC 资源块。 它们都使用
Environment
DSC 资源。
正在编译配置
必须先将 DSC 配置编译为 MOF 文档,然后才能使用 DSC 配置。 可以通过调用 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
识别的动态关键字 (keyword) 。 它不是 cmdlet。 Import-DscResource
支持两个参数:
- ModuleName 是建议使用
Import-DscResource
的方式。 它接受包含要导入资源的模块名称以及模块名称的字符串数组。 - Name 是要导入资源的名称。 这不是作为 返回对象的 Name 属性返回的
Get-DscResource
友好名称,而是定义资源架构时使用的类名 () 返回Get-DscResource
的 对象的 ResourceType 属性。
有关使用 Import-DSCResource
的详细信息,请参阅使用 Import-DSCResource
重要
计算机配置存在限制,阻止 DSC 资源使用 PowerShell 本身或PowerShell 库模块中未包含的任何 PowerShell cmdlet。 使用一个或多个 Windows 模块 中的 cmdlet 的 DSC 资源在计算机配置中不起作用。