Установить запуск службы с помощью DSC - PullRequest
0 голосов
/ 08 февраля 2019

новичок DSC здесь.Сбой создания файла MOF

PSDesiredStateConfiguration \ Node: аргумент нулевой или пустой.Укажите аргумент, который не является пустым или пустым, а затем повторите команду.В строке: 13 char: 5 + Узел localhost + ~~~~ + CategoryInfo: MetadataError: (:) [PSDesiredStateConfiguration \ node], ParentContainsErrorRecordException + FullyQualifiedErrorId: ArgumentIsNull, PSDesiredStateConfiguration \ node '. Ошибка конфигурации, возникающая при обработке конфигурации SLC

Пожалуйста, просмотрите ошибки, указанные в потоке ошибок, и измените свой код конфигурации соответствующим образом.В C: \ windows \ system32 \ WindowsPowerShell \ v1.0 \ Modules \ PSDesiredStateConfiguration \ PSDesiredStateConfiguration.psm1: 3917 char: 5 + throw $ ErrorRecord + ~~~~~~~~~~~~~~~~~~ +CategoryInfo: InvalidOperation: (SQLConfig: String) [], InvalidOperationException + FullyQualifiedErrorId: FailToProcessConfiguration

    Configuration SQLConfig {
        param(
            # Parameter help description
            [Parameter(Mandatory =$true)][string[]]$serviceConfig,
            [Parameter(Mandatory =$true)][string]$DataDrive,
            [Parameter(Mandatory =$true)][string]$LogDrive

        )

    Import-DscResource -ModuleName SqlServerDsc
    Import-DscResource -ModuleName PSDesiredStateConfiguration

    Node localhost
    {
        WindowsFeature Net35
        {
            Name = 'NET-Framework-Core'
            Ensure = 'Present'
        }
        WindowsFeature Net45
        {
            Name = 'NET-Framework-45-Core'
            Ensure = 'Present'
        }
        WindowsFeature Cluster
        {
            Name = 'RSAT-Clustering'
            Ensure = 'Present'
        }

        File datadrive
        {
           Type = 'Directory'
           DestinationPath = $DataDrive
           Ensure ='Present' 

        }
        File logdrive
        {
           Type = 'Directory'
           DestinationPath = $LogDrive
           Ensure ='Present' 
        }
        SqlDatabaseDefaultLocation dataPath
        {
            InstanceName = 'MSSQLSERVER'
            Path = $DataDrive
            ServerName = 'localhost'
            Type = 'Data'
            DependsOn = '[File]datadrive'
        }
        SqlDatabaseDefaultLocation logPath
        {
            InstanceName = 'MSSQLSERVER'
            Path = $LogDrive
            ServerName = 'localhost'
            Type = 'Log'
            DependsOn = '[File]logdrive'
        }
        foreach ($service in $serviceConfig) {
            ServiceSet $service
            {
                Name = $service.ServiceName
                State = $service.State
                StartupType = $service.StartupType
                Ensure = $service.Ensure
            }


        }

    }
}
  $serviceConfig=(
        @{ServiceName='MSSQLSERVER';State='Running';StartupType='Automatic';Ensure='Present'},
        @{ServiceName='SQLSERVERAGENT';State='Running';StartupType='Automatic';Ensure='Present'},
        @{ServiceName='SQLBrowser';State='Ignore';StartupType='Disabled';Ensure='Present'} ) SQLConfig -serviceConfig $serviceConfig -DataDrive "F:\Data"
    -LogDrive "H:\Log" -OutputPath "C:\dump"

1 Ответ

0 голосов
/ 08 февраля 2019

Несколько (небольших) проблем.

Сначала вы настраиваете Services, а не ServiceSets, поэтому имя ресурса в цикле foreach внизу неверное.

Во-вторых, имя сконфигурированного ресурса (у вас ServiceSet $service) должно быть строкой (что-то вроде Service $service.ServiceName)

В-третьих, вы указали, что параметр $ServiceConfig являетсямассив строк, но вы предоставляете массив хеш-таблиц (HashTable[]).Вы хотите обновить тип параметра конфигурации.

В-четвертых, значение состояния «Игнорируется» недопустимо.Должно быть "Работает" или "Остановлено"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...