DSC 配置

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

另请参阅