azure PowerShell DSC:xWebSite错误:所需的网站绑定对网站无效

jgwigjjp  于 2023-04-22  发布在  Shell
关注(0)|答案(2)|浏览(136)

场景:尝试使用Azure自动化帐户使用DSC创建https网站。我收到以下错误。您是否遇到相同的场景?任何帮助都很好。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"})
    })
    }
irtuqstp

irtuqstp1#

在DSC配置中脚本资源之外使用的表达式在编译时执行。下面的行将在管理计算机上执行,其中证书可能不存在,并将.mof-file中的指纹设置为NULL。您可以通过查看生成的mof-file来验证这一点。

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

您需要将指纹指定为string-value,或者使用Script-resource来设置绑定,在该绑定中,您可以将Get-ChildItem-命令作为SetScript-scriptblock的一部分运行。

fdx2calv

fdx2calv2#

意识到这是旧的和相当冗余的指导,但基本上你要么有一个命令传递到DSC的拇指指纹作为一个参数,或者你可以让你的DSC在编译过程中强制调用服务器的拇指指纹如下(除了我的例子通过主题名称,以防有dupes并获得最新的)。

$tp = Invoke-Command -Session (New-PSSession -ComputerName $Node.NodeName -Credential $RunAs -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck)) -ScriptBlock {
                                param ([string] $Certi)
                            (dir cert:LocalMachine -Recurse | Where-Object { $_.Subject -like "*$Certi*" -Or $_.FriendlyName -like "*$Certi*"  } | sort $_.NotBefore | select -last 1).Thumbprint.ToString() 
                            } -ArgumentList $Name

                PfxImport $Name
                {
                    Thumbprint = $tp
                    Location   = "LocalMachine"
                    Store      = $Store
                    Credential = New-Object System.Management.Automation.PSCredential ($RunAs.UserName, (ConvertTo-SecureString $CertPass -AsPlainText -Force))
                    Path       = $Pfx
                    Ensure     = $Ensure
                }

相关问题