Подтвердить что ты не робот

В powershell отсутствует терминатор:

У меня есть следующий script код

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

Я запускаю script с помощью:.\deployrelease.ps1 -ReleaseFile ".\deploy.zip" -Destination "."

Но я продолжаю получать следующее:

    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

Я не смог найти исправление, поскольку не вижу никаких проблем.

Любая помощь?

4b9b3361

Ответ 1

Посмотрите на две черты в

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

Этот первый не обычный штрих, а en-dash (&ndash; в HTML). Замените это чертой, найденной до Dst.

Ответ 2

В вашем script, почему вы используете одинарные кавычки вокруг переменных? Они не будут расширены. Используйте двойные кавычки для расширения переменных или сами имена переменных.

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

to

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

Ответ 3

Эта ошибка также возникает, если вы вызываете файл .ps1 из файла .bat а путь к файлу имеет пробелы.

Исправление состоит в том, чтобы убедиться, что на пути файла .ps1 нет пробелов.