2017-05-06 2 views
0

Szenario: Es wurde versucht, eine HTTPS-Website mit DSC mithilfe des Azure Automation-Kontos zu erstellen. Ich bekomme den folgenden Fehler. Hatten Sie das gleiche Szenario? Jede Hilfe wird großartig sein. HTTP-Bindungen funktionieren einwandfrei.PowerShell DSC: xWebSite-Fehler: Gewünschte Website-Bindungen sind nicht für die Website gültig

Windows-2012 R2

XWebAdministration Modul-Version: 1.17.0.0

Fehler: Powershell DSC Ressource MSFT_xWebsite fehlgeschlagen Test TargetResource Funktionalität mit Fehlermeldung auszuführen: Gewünschte Website Bindings für die Website nicht gültig sind

DSC Knoten Config:

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-Konfiguration:

$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"}) 
    }) 
    } 
+0

Was passiert, wenn Sie nur eine https-Site hinzufügen? – CtrlDot

+0

Immer noch das gleiche Problem. Sieht so aus, als ob xwebsite den Befehl get nicht am Fingerabdruck des Zertifikats unterstützt. Wenn ich den Fingerabdruck des Zertifikats als String eingib, funktioniert es einwandfrei. Grundsätzlich können wir keine Werte dynamisch übergeben. – CKS

+0

Sie könnten das als Variable höher setzen und dann übergeben in einer Zeichenfolge – CtrlDot

Antwort

0

Ausdrücke, die außerhalb einer Skript-Ressource in DSC-Konfigurationen verwendet werden, werden beim Kompilieren ausgeführt. Die folgende Zeile wird auf dem Verwaltungscomputer ausgeführt, auf dem wahrscheinlich kein Zertifikat vorhanden ist, und legt den Fingerabdruck in der MOF-Datei auf NULL fest. Sie können dies überprüfen, indem Sie in der generierten MOF-Datei suchen.

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

Sie müssen den Fingerabdruck als String-Wert angeben, oder ein Skript-Ressource verwenden, um die Bindung zu setzen, wo Sie Ihre laufen konnte Get-ChildItem -command als Teil des setScript-Skript.

+0

Hey Frode, Danke für Ihre Antwort .. Ich habe versucht, zu tun, was Sie vorgeschlagen, aber immer noch das gleiche Problem. – CKS

+0

GetScript = {} TestScript = {$ False} SetScript = { $ certificatestore = $ (Get-ChildItem cert: \ LocalMachine \ Meine | wo {$ _. Betreff -match "WMSvc"} | auswählen -First 1) write-host "Dies ist $ certificatestore" } } und in der Bindinginfo versuche ich dieses CertificateThumbprint = "$ ($ certificatestore.Thumbprint)" ..aber immer noch das gleiche Problem..ist das, was Sie vorgeschlagen haben? Fehler: Gewünschte Websitebindungen sind nicht für die Website gültig. – CKS

+0

Nein, fügen Sie die Bindung mit einem geeigneten Cmdlet in setscript hinzu (denken Sie daran, auch funktionierendes testscript und getscript zu setzen). Sie können keine Bindungsinformationen mit der xWebsite festlegen, wenn Sie keinen statischen Wert für den Fingerabdruck AFAIK angeben können. –

Verwandte Themen