2016-02-04 4 views
0

У меня есть файл данных конфигурации, как data.psd1Как создать MOF из файла конфигурации и файла конфигурации в конфигурации желаемого состояния PowerShell?

@{ 
    AllNodes = @(
    @{ 
     NodeName = "*" 
     LogPath = "C:\Logs" 
    }, 

    @{ 
     NodeName = "machine1"; 
     Roles = @("SmtpRole", "WebRole") 
    }, 

    @{ 
     NodeName = "machine2"; 
     Roles = @("SmtpRole") 
    } 
) 
} 

У меня есть конфигурацию, как FarmConfiguration.ps1

Configuration FarmConfiguration { 
Import-DscResource -ModuleName 'PSDesiredStateConfiguration' 
Import-DscResource -ModuleName 'MyCustomDsc' 

    Node $AllNodes.NodeName 
    { 
    SimpleTcpIpConfiguration SimpleTcpIp 
    { 
    } 
    } 

    Node $AllNodes.Where{$_.Roles -contains "WebRole"}.NodeName 
    { 
    WebConfiguration Web 
    { 
    } 
    } 

    Node $AllNodes.Where{$_.Roles -contains "SmtpRole"}.NodeName 
    { 
    SmtpConfiguration Smtp 
    { 
    } 
    } 
} 

Я знаю, что если я добавить «FarmConfiguration-ConfigurationData data.psd1» на дно моего файла FarmConfiguration.ps1, тогда все работает нормально.

Но это большая проблема. Я не хочу, чтобы моя FarmConfiguration вообще знала о файле данных, это проверка на исходный контроль.

Я хочу, чтобы иметь возможность создавать MOF на основе различных файлов данных, как я могу это сделать? Благодарю.

ответ

0

Хорошо, я узнал, как делать то, что я прошу.

Для всех практических целей FarmConfiguration является частной функцией внутри файла .ps1. Поэтому я обновил FarmConfiguration.ps1 до следующего.

param(
    [Parameter(Mandatory)] 
    [string]$ConfigurationData 
) 

Configuration FarmConfiguration { 
Import-DscResource -ModuleName 'PSDesiredStateConfiguration' 
Import-DscResource -ModuleName 'MyCustomDsc' 

    Node $AllNodes.NodeName 
    { 
    SimpleTcpIpConfiguration SimpleTcpIp 
    { 
    } 
    } 

    Node $AllNodes.Where{$_.Roles -contains "WebRole"}.NodeName 
    { 
    WebConfiguration Web 
    { 
    } 
    } 

    Node $AllNodes.Where{$_.Roles -contains "SmtpRole"}.NodeName 
    { 
    SmtpConfiguration Smtp 
    { 
    } 
    } 
} 

FarmConfiguration -ConfigurationData $ConfigurationData 

Теперь, когда я сделал, что я могу назвать это от отдельного сценария, как так

.\FarmConfiguration.ps1 -ConfigurationData data.psd1