web-dev-qa-db-ja.com

powershellにターミネーターがありません: "

私は次のスクリプトコードを持っています

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

。\ 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

問題が見当たらないため、修正を見つけることができませんでした。

何か助け?

43
CoolStraw

の2つのダッシュをよく見てください

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

この最初のダッシュは通常のダッシュではなく、ダッシュ(&ndash;のHTML)。 Dstの前にあるダッシュで置き換えます。

112
Tim Pietzcker

スクリプトで、変数を単一引用符で囲むのはなぜですか?これらは展開されません。変数の展開または変数名のみに二重引用符を使用します。

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

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

このエラーは、.ps1ファイルから.batファイルを呼び出し、ファイルパスにスペースがある場合にも発生します。

修正は、.ps1ファイルのパスにスペースがないことを確認することです。

1
zar