В объявлении ресурса powershell DSC, каким синтаксическим элементом является объявление? - PullRequest
0 голосов
/ 30 октября 2018

Я пытаюсь выяснить, какой синтаксический элемент используется для объявления ресурса Powershell DSC. Например:

    SqlServerNetwork "RDBMS"
    {
        DependsOn = @("[SqlSetup]RDBMS")
        InstanceName = "MSSQLSERVER"
        ProtocolName = "tcp"
        IsEnabled = $true
        TCPPort = 1433
        RestartService = $true 
    }

Что такое синтаксический блок между (и включая) двумя скобками? Это не хеш-таблица (без @) и не блок-скрипт (потому что свойства делают операторы Powershell). Это похоже на параметр ресурса, поэтому я хотел бы понять синтаксис.

1 Ответ

0 голосов
/ 30 октября 2018

Я не могу найти какую-либо определенную ссылку, но я думаю, что все SqlServerNetwork "RDBMS" { … } - это динамическое выражение ключевого слова, а { … } - это "свойства".

Если вы посмотрите исходный код парсера PowerShell здесь:

https://github.com/PowerShell/PowerShell/blob/720e842c86722e9fb51e191c39bd8307d79da11a/src/System.Management.Automation/engine/parser/Parser.cs#L3579

есть этот комментарий:

///     keyword [parameters] [name] { a=1; b=2; } # constructor with properties

в комментариях xml для функции DynamicKeywordStatementRule, которая соответствует синтаксису блока DSC.

Если это так, ссылка на DynamicKeywordStatementAst находится здесь:

https://docs.microsoft.com/en-us/dotnet/api/system.management.automation.language.dynamickeywordstatementast?view=pscore-6.0.0

Это насколько я могу получить, хотя. Надеюсь, кто-то еще может дать более подробную информацию.

...