如何在没有PowerShell的情况下创建和执行dsc

时间:2014-07-28 01:08:14

标签: .net dsc

我想用C#作为创建和应用DSC的语言。到目前为止,我能想到的唯一解决方案是从代码中调用powershell。

有没有办法在不通过PowerShell的情况下完成?

1 个答案:

答案 0 :(得分:2)

您可以使用MSFT_DscLocalConfigurationManager CIM类和该类中的方法执行与PowerShell cmdlet相同的工作。这需要以某种方式生成的MOF文件。这可以是使用声明性配置脚本或手工制作! :)这是将配置推送到远程系统的示例。哦!我在这里使用PowerShell,但你也可以使用C#来做到这一点!

因此,如果您不想使用PowerShell生成MOF,您只需要在C#中找到一种方法。

Configuration DemoConfig {
    Node Test {
        File FileDemo {
            DestinationPath = "C:\Windows\System32\Drivers\Etc\Hosts.backup"
            Contents = ""
            Ensure = "Present"
        }
    }
}

$mof = DemoConfig

$configurationData = [Byte[]][System.IO.File]::ReadAllBytes((Resolve-Path $mof.FullName))
$buffSize = 0
$totalSize = [System.BitConverter]::GetBytes($configurationData.Length + 4 + $buffSize)
$configurationData = $totalSize + $configurationData

Invoke-CimMethod -ComputerName Server01 –Namespace "root/Microsoft/Windows/DesiredStateConfiguration" -ClassName "MSFT_DSCLocalConfigurationManager" -MethodName "SendConfigurationApply" -Arguments @{ConfigurationData = $configurationData; Force = $true}