PowerShell DSC: ошибка xWebSite: желаемые привязки веб-сайта недействительны для веб-сайта

Сценарий: попытка создать https-сайт с DSC с помощью учетной записи службы автоматизации Azure. Я получаю ошибку ниже. Вы столкнулись с таким же сценарием? Любая помощь будет отличной. Привязки HTTP работают нормально.

Windows 2012 R2

Версия модуля XWebAdministration: 1.17.0.0

Ошибка: ресурсу PowerShell DSC MSFT_xWebsite не удалось выполнить функцию Test-TargetResource с сообщением об ошибке: желаемые привязки веб-сайтов недействительны для веб-сайта

Конфигурация узла DSC:

foreach ($Site in $Node.Sites)
        {
            xWebSite "$($Site.Name)WebSite"
            {
                Ensure = "Present"
                Name = $Site.Name
                ApplicationPool = "$($Site.Name)"
                PhysicalPath = $Site.Path
                State = 'Started'
                DependsOn = "[xWebAppPool]$($Site.Name)AppPool"
                BindingInfo = MSFT_xWebBindingInformation
                    {
                        Protocol = 'https'
                        Port = $Site.Port
                        CertificateStoreName = 'MY'
                        CertificateThumbprint = $(Get-ChildItem cert:\LocalMachine\My | where { $_.Subject -match "WMSvc" } | select -First 1).Thumbprint
                    } 
            }

Конфигурация DSC:

    $data = @{
        AllNodes = @(
            @{
                Sites = @(
                            @{Name="website1";Port="8643";Path="C:\inetpub\www\website1";Apps="App1","App2"},                            @{Name="website2";Port="9643";Path="C:\inetpub\www\website2";Apps="App3","App4"})
    })
    }

person CKS    schedule 06.05.2017    source источник
comment
Что произойдет, если вы добавите только один сайт https?   -  person CtrlDot    schedule 06.05.2017
comment
По-прежнему та же проблема. Похоже, что xwebsite не поддерживает команду get для отпечатка сертификата. Если я ввожу отпечаток сертификата в виде строки, он работает нормально .. В основном мы не можем передавать значения динамически ..   -  person CKS    schedule 07.05.2017
comment
Вы можете установить это как переменную выше, а затем передать ее как строку   -  person CtrlDot    schedule 07.05.2017


Ответы (1)


Выражения, которые используются вне сценария-ресурса в DSC-конфигурациях, выполняются при компиляции. Следующая строка будет выполнена на управляющем компьютере, где сертификат, вероятно, не существует, и установит отпечаток в .mof-файле на NULL. В этом можно убедиться, посмотрев в сгенерированный mof-файл.

CertificateThumbprint = $(Get-ChildItem cert:\LocalMachine\My | where { $_.Subject -match "WMSvc" } | select -First 1).Thumbprint

Вам необходимо указать отпечаток в виде строкового значения или использовать Script-resource, чтобы установить привязку, в которой вы могли бы запустить вашу Get-ChildItem-команду как часть SetScript-scriptblock.

person Frode F.    schedule 07.05.2017
comment
Привет, Frode, спасибо за ваш ответ .. Я пытался сделать то, что вы предлагали, но все та же проблема. - person CKS; 09.05.2017
comment
GetScript = {} TestScript = {$ False} SetScript = {$ Certificatestore = $ (Get-ChildItem cert: \ LocalMachine \ My | где {$ _. Subject -match WMSvc} | select -First 1) write-host Это $ certtestore}} и в привязке информации я пытаюсь использовать этот CertificateThumbprint = $ ($ certtestore.Thumbprint) .. но все та же проблема .. это то, что вы предлагали? Ошибка: желаемые привязки веб-сайтов недействительны для веб-сайта. - person CKS; 09.05.2017
comment
Нет, добавьте привязку с помощью соответствующего командлета в setscript (не забудьте также установить рабочий testcript и getscript). Вы не можете установить bindinginfo с помощью xWebsite, если вы не можете указать статическое значение для отпечатка AFAIK. - person Frode F.; 10.05.2017
comment
Спасибо за этот ответ, он помог мне понять, что пока я пытался получить имя субъекта сертификата с помощью запроса Powershell, оно не разрешалось на самом узле, и вместо этого я использовал переменные данных конфигурации для создания нужной мне строки. - person Jeff Miles; 14.03.2018