私は次のスクリプトコードを持っています
#[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
問題が見当たらないため、修正を見つけることができませんでした。
何か助け?
の2つのダッシュをよく見てください
unzipRelease –Src '$ReleaseFile' -Dst '$Destination'
この最初のダッシュは通常のダッシュではなく、ダッシュ(–
のHTML)。 Dst
の前にあるダッシュで置き換えます。
スクリプトで、変数を単一引用符で囲むのはなぜですか?これらは展開されません。変数の展開または変数名のみに二重引用符を使用します。
unzipRelease –Src '$ReleaseFile' -Dst '$Destination'
に
unzipRelease –Src "$ReleaseFile" -Dst "$Destination"
このエラーは、.ps1
ファイルから.bat
ファイルを呼び出し、ファイルパスにスペースがある場合にも発生します。
修正は、.ps1
ファイルのパスにスペースがないことを確認することです。