none
Web Deploy, Publish Settings not found Error RRS feed

  • Frage

  • Hallo!

    Ich möchte gerne alle Webseiten von meinem alten IIS auf den neuen Synchronisieren über Web Deploy mit einem PowerShell Script. Ich nutze dazu das WDeploy PSSnapin. Ich kriege jedoch folgenden Error:

    ______________________________________

    PS C:\Users\Administrator\desktop> $error
    Sync-WDSite : Die Datei mit den Veröffentlichungseinstellungen
    "C:\Users\Administrator\desktop\Microsoft.Web.Deployment.PowerShell.PublishSettings" wurde nicht gefunden.  Weitere
    Informationen unter: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_PUBISH_SETTINGS_FILE_NOT_FOUND.
    In C:\Users\Administrator\desktop\wdeploy.ps1:87 Zeichen:17
    +         $sync = Sync-WDSite $Name $Name -sitephysicalpath $spp `
    +                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [Sync-WDSite], DeploymentPowerShellException
        + FullyQualifiedErrorId : Microsoft.Web.Deployment.PowerShell.SyncSite

    ______________________________________

    Witzig daran ist, dass der Link welcher mir vorgeschlagen wird für die Fehlersuche, den Fehler nicht beinhaltet.

    Der Code sieht folgendermassen aus:

    ______________________________________

    # Einlesen alles PublishSettings
    $sitepublish = gci "W:\PublishSettings\$remoteIIS" | ? {!$_.PSiscontainer} | select FullName,BaseName

    switch ($remoteIIS)
    {
        'BBIIS-DVLP1' {
            [hashtable] $path = @{
            "SwyxSkin" = "D:\wwwroot\Swyx"
            }
        }
        'BBIIS' {
            [hashtable] $path = @{
            "SwyxSkin" = "D:\inetpub\Swyx"
            }
        }
    }

    Write-Host "Starten von der Synchronisation der Webseiten von $remoteIIS zu $env:computername"

    $sitepublish | % {
        $Name = ($_.BaseName).split('_')[2]
        Write-Host "Synchronistaion von Seite $Name startet jetzt" -fore Green
        $spp = $path.Get_Item($Name)
        Try {
            $publishsettings = Get-WDPublishSettings -FileName $_.FullName -ErrorAction Stop
            $sync = Sync-WDSite $Name $Name -sitephysicalpath $spp `
                                            -SourcePublishSettings $publishsettings `
                                            -IncludeAppPool `
                                            -ErrorAction Stop `
                                            -WarningAction Continue
            Write-Host "Synchronistaion von Seite $Name fertig" -fore Green
        } Catch {
            Write-Host "Fehler von Synchronistation von Seite $Name." -fore Red
        }
    }

    ______________________________________

    Wie ihr seht liegen die Publish settings hier: W:\PublishSettings\$remoteIIS

    und werden auch von dort geholt: Get-WDPublishSettings -FileName $_.FullName

    Im Error steht aber der Pfad zum Desktop: "C:\Users\Administrator\desktop\Microsoft.Web.Deployment.PowerShell.PublishSettings" wurde nicht gefunden.

    Was mache ich falsch? die Publishsettings Datei liegt auf einem Servershare auf den ich vollzugriff habe (W:\ wurde als PSDrive hinzugefügt mit administrator Berechtigungen vom remoteserver)

    Komisch scheint mir auch, dass der Fehler erst bei sync-wdsite auftritt und nicht bereits bei get-wdpublishsettings

    Danke!





    Mittwoch, 20. Juli 2016 14:05

Antworten

  • Workaround Lösung:

    Ich nehme an dieser Fehler ist im Sync-WDSite cmdlet einprogrammiert und ist meines Erachtens nur per Workaround lösbar: Datei auf Desktop kopieren und nach der Synchronisation wieder löschen.

    Code:

    ___________________________________________

    $sitepublish | % {
        $error.clear()
        $copy = copy-item $_.FullName $env:USERPROFILE\Desktop
        $rename = gci $env:USERPROFILE\Desktop -Filter '*.PublishSettings' | % {
            Rename-Item -Path $_.FullName -NewName Microsoft.Web.Deployment.PowerShell.PublishSettings
        }
        $Name = ($_.BaseName).split('_')[2]
        Write-Host "Synchronistaion von Seite $Name startet jetzt" -fore Green
        $spp = $path.Get_Item($Name)
        Try {
            $publishsettings = Get-WDPublishSettings -FileName $_.FullName -ErrorAction Stop
            $sync = Sync-WDSite $Name $Name -sitephysicalpath $spp `
                                            -SourcePublishSettings $publishsettings `
                                            -IncludeAppPool `
                                            -WarningAction Continue `
                                            -ErrorAction Stop
            Write-Host "Synchronistaion von Seite $Name fertig" -fore Green
            $clear = gci $env:USERPROFILE\Desktop -Filter '*.PublishSettings' | % { Remove-Item -Path $_.FullName -Force }
        } Catch {
            Write-Host "Fehler von Synchronistation von Seite $Name. Fehlerbeschrieb:" -fore Red
            $Error
            $clear = gci $env:USERPROFILE\Desktop -Filter '*.PublishSettings' | % { Remove-Item -Path $_.FullName -Force }
        }
    }


    Freitag, 22. Juli 2016 09:01

Alle Antworten

  • kleines Update: Wenn man die Datei "Microsoft.Web.Deployment.PowerShell.PublishSettings" auf dem source und destination server erstellt, geht es einen schritt weiter, jedoch ist es trotzdem noch sehr komisch. Wieso müssen diese Dateien erstellt sein?

    Donnerstag, 21. Juli 2016 09:31
  • Workaround Lösung:

    Ich nehme an dieser Fehler ist im Sync-WDSite cmdlet einprogrammiert und ist meines Erachtens nur per Workaround lösbar: Datei auf Desktop kopieren und nach der Synchronisation wieder löschen.

    Code:

    ___________________________________________

    $sitepublish | % {
        $error.clear()
        $copy = copy-item $_.FullName $env:USERPROFILE\Desktop
        $rename = gci $env:USERPROFILE\Desktop -Filter '*.PublishSettings' | % {
            Rename-Item -Path $_.FullName -NewName Microsoft.Web.Deployment.PowerShell.PublishSettings
        }
        $Name = ($_.BaseName).split('_')[2]
        Write-Host "Synchronistaion von Seite $Name startet jetzt" -fore Green
        $spp = $path.Get_Item($Name)
        Try {
            $publishsettings = Get-WDPublishSettings -FileName $_.FullName -ErrorAction Stop
            $sync = Sync-WDSite $Name $Name -sitephysicalpath $spp `
                                            -SourcePublishSettings $publishsettings `
                                            -IncludeAppPool `
                                            -WarningAction Continue `
                                            -ErrorAction Stop
            Write-Host "Synchronistaion von Seite $Name fertig" -fore Green
            $clear = gci $env:USERPROFILE\Desktop -Filter '*.PublishSettings' | % { Remove-Item -Path $_.FullName -Force }
        } Catch {
            Write-Host "Fehler von Synchronistation von Seite $Name. Fehlerbeschrieb:" -fore Red
            $Error
            $clear = gci $env:USERPROFILE\Desktop -Filter '*.PublishSettings' | % { Remove-Item -Path $_.FullName -Force }
        }
    }


    Freitag, 22. Juli 2016 09:01