2017-10-19 11 views
0

DSC 구성 객체를 도우미 함수/cmdlet으로 전달하여 좀 더 쉽게 사용할 수 있기를 바랍니다.PowerShell DSC 구성을 객체로 전달하는 방법은 무엇입니까?

예와 같은 구성은 다음과 같습니다가 원하는 것을 함께 할 수있는 LCMConfig 구성 MyHelperFunction에 전달되는

MyHelperFunction ` 
    -ConfigurationName LCMConfig ` 
    -ConfigurationData $configurationData ` 
    -Credential $administratorCredential 

같은 일을 할 수있는 방법이

[DSCLocalConfigurationManager()] 
configuration LCMConfig 
{ 
    Node $AllNodes.NodeName 
    { 
     Settings 
     { 
      ActionAfterReboot = 'ContinueConfiguration' 
      ConfigurationMode = 'ApplyOnly' 
      RebootNodeIfNeeded = $true 
     } 
    } 
} 

있습니까?

답변

0

좋아, 마침내 어떻게하는지 알았어.

$configuration = Get-Command $ConfigurationName 
Invoke-DscConfiguration ` 
    -Configuration $configuration ` 
    -ConfigurationData $configurationData ` 
    -Credential $administratorCredential 

Invoke-DscConfiguration이 어디 :

function Invoke-DscConfiguration 
{ 
    [CmdletBinding()] 
    [OutputType([String])] 
    Param 
    (
     [Parameter(Mandatory=$true)] 
     [System.Management.Automation.ConfigurationInfo]$Configuration, 

     [Parameter(Mandatory=$true)] 
     [Hashtable]$ConfigurationData, 

     [Parameter(Mandatory=$true)] 
     [PSCredential]$Credential, 

     [Switch]$IsLCMConfiguration, 

     [HashTable]$ConfigurationParameters 
    ) 

    $ErrorActionPreference = 'Stop' 

    $outputPath = Get-TemporaryDscDirectory 

    Write-Verbose "Compiling the '$($ConfigurationName.Name)' configuration." 
    & $Configuration -ConfigurationData $ConfigurationData -OutputPath $outputPath | Out-Null 

    Write-Verbose "Executing the '$($ConfigurationName.Name)' configuration." 
    if ($IsLCMConfiguration) 
    { 
     Set-DscLocalConfigurationManager -Path $outputPath -Force -Credential $Credential -Verbose 
    } 
    else 
    { 
     Start-DscConfiguration -Path $outputPath -Force -Wait -Credential $Credential -Verbose 
    } 
} 
당신은 그것을 할 수 있습니다