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 资源在计算机配置中不起作用。

另请参阅