当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] Invoke-DscResource:不带配置的 DSC

作者:精品下载站 日期:2024-12-14 20:49:59 浏览:14 分类:玩电脑

Invoke-DscResource:不带配置的 DSC


在 Windows Management Framework (WMF) v5 之前,想要在 PowerShell 中使用 Desired State Configuration (DSC) 将配置应用到其计算机的用户,如果想要预配整个服务器或仅安装单个服务器,则必须执行相同的过程。 Windows 功能。使用 Invoke-DscResource cmdlet 就不再是这样了。

要使用 DSC,您通常必须:

  1. 创建 DSC 配置脚本
  2. 将脚本编译成MOF文件
  3. 以某种方式将 MOF 文件传送到机器
  4. 调用本地配置管理器 (LCM) 以使用该 MOF
    文件

这个过程是有效的,但有时您不想首先经历构建配置的所有麻烦。如果您只想通过 DSC 应用微小的更改而无需创建配置和处理 MOF 文件,这不是很好吗?这就是 PowerShell 团队在 WMF 5.0 中以 Invoke-DscResource 命令的形式为我们提供的。

在本文中,我们将介绍构建配置以在本地计算机上安装单个 Windows 功能与通过 Invoke DscResource 执行此操作之间的区别,以了解这两种方法的差异。

构建并应用 DSC 配置

首先,我们通过创建配置、交付 MOF 并告诉 LCM 使用 MOF 的“老式”方式来启用 telnet 客户端 Windows 功能。为此,我们将从简单的 DSC 配置开始。

Configuration InstallWindowsFeature {
    param()
    Node 'localhost' {
        WindowsFeature 'TelnetClient' {
            Ensure = 'Present'
            Name = 'Telnet-Client'
        }
    }
}
InstallWindowsFeature

一旦我们构建了配置,我们就会将其转换为 LCM 可以通过执行脚本来理解的 MOF 文件。这给了我们一个 localhost.mof 文件。

获得 MOF 文件后,我现在可以运行 Start-DscConfigurationManager

告诉 LCM 它有一个新配置要处理。

Telnet 客户端 Windows 功能现在由 DSC 控制。

在 PowerShell Cmdlet Invoke-DscResource 中使用 DSC

现在让我们看看如何通过在 PowerShell 中使用 Invoke-DscResource 命令和 DSC 来完成此操作。

PS> Invoke-DscResource -Name WindowsFeature -Method Set -Property @{Name ='Telnet-Client'} -Verbose -ModuleName PSDesiredStateConfiguration

完毕。

好吧,不是技术上的,但你明白了。 Invoke-DscResource 可以放弃配置和 MOF 操作,并允许您调用 GetSetTest手动方法。它使您能够对 DSC 资源进行精细控制。

请注意,通过使用此方法,您并没有获得 DSC 的最大好处之一,即“设置好后就忘记它”的心态。此时,您将承担 LCM 之前的责任,首先运行 Test 方法来查看机器处于何种状态,然后才运行 如果机器未处于所需状态,请设置方法。

从技术上讲,使用如下所示的 Invoke-DscResource 与通过配置应用 LCM 时所经历的工作流程相同。

$commonParams = @{
    Name = 'WindowsFeature'
    Property = @{ Name = 'Telnet-Client' }
    ModuleName = 'PSDesiredStateConfiguration'
    Verbose = $true
}

$state = Invoke-DscResource @commonParams -Method Test

if (-not $state.InDesiredState) {
    Invoke-DscResource @commonParams -Method Set
}

运行此命令时,您将看到 Test 方法首先运行,并且仅当 LCM 检测到计算机未处于 Set 方法的正确状态时然后就会运行。

请注意,在较大容量中使用 Invoke-DscResource 时,Microsoft 建议禁用 LCM。毕竟,您正在替换 LCM 在直接调用方法时所做的事情,所以这是有道理的。虽然 Invoke-DscResource 在 LCM 启用时可以工作,但您会发现引用 Invoke-DscResource 的脚本将开始与 LCM 的自动特性发生冲突。

概括

如果您厌倦了构建 DSC 配置并且只想完成工作,Invoke-DscResource 命令可能适合您。此命令非常适合简单的 DSC 配置更改。如果您发现自己开始编写像 PowerShell 这样的 DSC 脚本,尽管没有 DSC 提供的幂等性,那么您可能应该开始研究配置。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯