it-swarm.com.de

powershell fehlt der Terminator: "

Ich habe den folgenden Skriptcode

    #[string]$password = $( Read-Host "Input password, please" )
    param (
        [string]$ReleaseFile = $(throw "-ReleaseFile is required"),
        [string]$Destination = $(throw "-Destination is required")
    )

    function unzipRelease($src, $dst)
    {
        $Shell = new-object -com Shell.application
        $Zip = $Shell.NameSpace($src)
        foreach($item in $Zip.items())
        {
            $Shell.Namespace($dst).copyhere($item)
        }
    }

    #  .\deployrelease.ps1 -ReleaseFile ".\deploy.Zip" -Destination "."

    unzipRelease –Src '$ReleaseFile' -Dst '$Destination'

Ich führe das Skript aus mit:.\Deployrelease.ps1 -ReleaseFile ".\Deploy.Zip" -Destination "."

Aber ich bekomme das immer wieder:

    PS C:\Users\Administrator\Documents\Tools> .\deployrelease.ps1 -ReleaseFile ".\deploy.Zip" -Destination
    The string starting:
    At C:\Users\Administrator\Documents\Tools\deployrelease.ps1:19 char:16
    + unzipRelease â? <<<< "Src '$ReleaseFile' -Dst '$Destination'
    is missing the terminator: ".
    At C:\Users\Administrator\Documents\Tools\deployrelease.ps1:19 char:55
    + unzipRelease â?"Src '$ReleaseFile' -Dst '$Destination' <<<<
        + CategoryInfo          : ParserError: (Src `'$ReleaseF...'$Destination`':String) [], ParseException
        + FullyQualifiedErrorId : TerminatorExpectedAtEndOfString

Ich konnte den Fix nicht finden, da ich kein Problem sehe.

Irgendeine Hilfe?

37
CoolStraw

Schauen Sie sich die beiden Gedankenstriche genau an

unzipRelease –Src '$ReleaseFile' -Dst '$Destination'

Dieser erste ist kein normaler Bindestrich, sondern ein en-Bindestrich (&ndash; in HTML). Ersetzen Sie dies durch den Bindestrich vor Dst.

95
Tim Pietzcker

Warum verwenden Sie in Ihrem Skript einfache Anführungszeichen für die Variablen? Diese werden nicht erweitert. Verwenden Sie doppelte Anführungszeichen für die Variablenerweiterung oder nur die Variablennamen selbst.

unzipRelease –Src '$ReleaseFile' -Dst '$Destination'

zu 

unzipRelease –Src "$ReleaseFile" -Dst "$Destination"
2
Jacob

Dieser Fehler tritt auch auf, wenn Sie .ps1-Datei aus einer .bat-Datei aufrufen und der Dateipfad Leerzeichen enthält.

Das Update soll sicherstellen, dass der Pfad der .ps1-Datei keine Leerzeichen enthält.

0
zar