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?
Regardez attentivement les deux tirets dans
unzipRelease –Src '$ReleaseFile' -Dst '$Destination'
Ce premier n'est pas un tiret normal, mais un tiret (–
en HTML). Remplacez-le par le tiret trouvé avant Dst
.
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"
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
.