web-dev-qa-db-fra.com

powershell manque le terminateur: "

J'ai le code de script suivant

    #[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'

Je lance le script avec:.\Deployrelease.ps1 -ReleaseFile ".\Deploy.Zip" -Destination "."

Mais je continue à avoir ceci:

    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

Je ne pouvais pas trouver le correctif car je ne voyais aucun problème.

De l'aide?

37
CoolStraw

Regardez attentivement les deux tirets dans

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

Ce premier n'est pas un tiret normal, mais un tiret (&ndash; en HTML). Remplacez-le par le tiret trouvé avant Dst.

95
Tim Pietzcker

Dans votre script, pourquoi utilisez-vous des guillemets simples autour des variables? Ceux-ci ne seront pas développés. Utilisez des guillemets pour développer les variables ou simplement les noms de variables eux-mêmes.

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

à 

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

Cette erreur se produira également si vous appelez le fichier .ps1 à partir d'un fichier .bat et que le chemin du fichier comporte des espaces.

Le correctif consiste à s'assurer qu'il n'y a pas d'espaces dans le chemin du fichier .ps1.

0
zar