Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 缺少语句块开关,导致脚本出错_Powershell_Tfs - Fatal编程技术网

Powershell 缺少语句块开关,导致脚本出错

Powershell 缺少语句块开关,导致脚本出错,powershell,tfs,Powershell,Tfs,我正在编写这个powershell脚本,用于自动化TFS部署。下面是脚本的一部分,它在switch语句子句中抛出error Missing语句块。语法在我看来是正确的,但我似乎无法解决错误。有什么想法吗 function core ([string]$EnVar) { # Set the build parameters $params="environment="+$EnVar+";SQLServer="+$SQLServer+";IISServer="+$IISServer

我正在编写这个powershell脚本,用于自动化TFS部署。下面是脚本的一部分,它在switch语句子句中抛出error Missing语句块。语法在我看来是正确的,但我似乎无法解决错误。有什么想法吗

function core ([string]$EnVar)
    {

# Set the build parameters
    $params="environment="+$EnVar+";SQLServer="+$SQLServer+";IISServer="+$IISServer+";DBName="+$DBName

    write-output $params >> $OutputFile

    C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe $DeploymentScript /p:$params >> $OutputFile 2>&1

    write-output $params >> $OutputFile
    write-output $LastExitCode >> $OutputFile

if ($LastExitCode -ne 0)
{
    write-output "An error has occured." >> $OutputFile
    $outline = "Updating build quality to Failed " + $Environment + " Deployment." 
    write-output $outline >> $OutputFile

    switch ($EnVar)
    {
        "Test" {$build.Quality = "Failed Test Deployment"}
        "Stage" {$build.Quality = "Failed Stage Deployment"}
        "Prod" {$build.Quality = "Failed Production Deployment"}
        default {$build.Quality = "Rejected"} 
    }
    $build.Save()

     $cmdLine = "/ID 2 /L ""Operation Logs"" /T ERROR /SO $tfsProject.DeployTo$EnVar /D ""($buildNumber) deployed by ($requestedby) FAILED! Deployment log file: $OutputFile """
    invoke-expression "$tool $cmdline"
    write-output "Sending failure email." >> $OutputFile
    $to = $emailRequestedBy
    $body = "<html>Deployment log file: """+ $OutputFile + """</html>"
    $subject = $tfsProject + " " + $EnVar + " Deployment failed"
    send-SMTPmail -to $to -from "tfsservice@vistex.com" -subject $subject -html -body $body
    exit(1)
}
else 
{
    $outline = "Successfully deployed to " + $EnVar + "."
    write-output $outline >> $OutputFile
    $outline = "Updating build quality to Deployed to " + $EnVar + "."
    write-output $outline >> $OutputFile

    switch ($EnVar)
    {   
        "Test" ($build.Quality = "Deployed to Test"}
        "Stage" {$build.Quality = "Deployed to Stage"}
        "Prod" {$build.Quality = "Deployed to Production"}
        default {$build.Quality = "Rejected"} 
    }

    $build.Save()
    $cmdLine = "/ID 1 /L ""Operation Logs"" /T SUCCESS /SO $tfsProject.DeployTo$EnVar /D ""($buildNumber) deployed by $requestedby successfully finish. Deployment log file: $OutputFile """
    invoke-expression "$tool $cmdline"
    write-output "Sending success email." >> $OutputFile
    $to = $emailRequestedBy
    $body = "<html>Deployment log file: """+ $OutputFile + """</html>"
    $subject = $tfsProject + " " + $EnVar + " Deployment successfully completed"
    send-SMTPmail -to $to -from "tfsservice@vistex.com" -subject $subject -html -body $body
} 
}
函数核心([string]$EnVar)
{
#设置构建参数
$params=“environment=“+$EnVar+”;SQLServer=“+$SQLServer+”;IISServer=“+$IISServer+”;DBName=“+$DBName
写入输出$params>>$OutputFile
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe$DeploymentScript/p:$params>>$OutputFile 2>&1
写入输出$params>>$OutputFile
写入输出$LastExitCode>>$OutputFile
if($LastExitCode-ne 0)
{
写入输出“发生错误。”>>$OutputFile
$outline=“将生成质量更新为失败的“+$Environment+”部署。”
写入输出$outline>>$OutputFile
交换机($EnVar)
{
“测试”{$build.Quality=“失败的测试部署”}
“阶段”{$build.Quality=“阶段部署失败”}
“Prod”{$build.Quality=“失败的生产部署”}
默认值{$build.Quality=“已拒绝”}
}
$build.Save()
$cmdLine=“/ID 2/L”操作日志”“/T错误/SO$tfsProject.DeployTo$EnVar/D”“($buildNumber)由($requestedby)部署失败!部署日志文件:$OutputFile”“”
调用表达式“$tool$cmdline”
写入输出“发送失败电子邮件”。>>$OutputFile
$to=$emailRequestedBy
$body=“部署日志文件:”“+$OutputFile+”“”
$subject=$tfsProject++$EnVar++部署失败
发送SMTPmail-to$to-from“tfsservice@vistex.com“-subject$subject-html-body$body
出口(1)
}
其他的
{
$outline=“已成功部署到“+$EnVar+”
写入输出$outline>>$OutputFile
$outline=“将构建质量更新为部署到“+$EnVar+”
写入输出$outline>>$OutputFile
交换机($EnVar)
{   
“测试”($build.Quality=“部署到测试中”}
“阶段”{$build.Quality=“部署到阶段”}
“Prod”{$build.Quality=“部署到生产环境”}
默认值{$build.Quality=“已拒绝”}
}
$build.Save()
$cmdLine=“/ID 1/L”操作日志”“/T成功/SO$tfsProject.DeployTo$EnVar/D”“($buildNumber)由$requestedby成功完成部署。部署日志文件:$OutputFile”“”
调用表达式“$tool$cmdline”
写入输出“发送成功电子邮件”。>>$OutputFile
$to=$emailRequestedBy
$body=“部署日志文件:”“+$OutputFile+”“”
$subject=$tfsProject++$EnVar++部署已成功完成
发送SMTPmail-to$to-from“tfsservice@vistex.com“-subject$subject-html-body$body
} 
}

找到了问题。这是一个打字错误…在“测试”案例中,您有一个
而不是
{

将行更新为:

        "Test" {$build.Quality = "Deployed to Test"}

错误在脚本中的switch语句中。它会在switch语句子句中不断抛出error Missing语句块。
        "Test" {$build.Quality = "Deployed to Test"}