2017-10-11 77 views
0

我有一个应该在本地部署某些服务Fabric应用一点PowerShell脚本:为什么powershell脚本跳到最后?

我试图这样执行它:

.\Deploy.ps1 -ArtifactPath C:\packages\EnterpriseAPIPackages201710109749b 

出于某种原因,跳到最后脚本的行!

enter image description here

我在做什么错?我如何获得所有要执行的行?

Param 
(
    [String] 
    $ArtifactPath 
) 

$LocalFolder = Split-Path -parent $MyInvocation.MyCommand.Path 

$DeployScriptFile = "$LocalFolder\Scripts\Deploy-FabricApplication.ps1" 

$ConfigFilePath = "$LocalFolder\config.xml" 

$ConfigFilePath = Resolve-Path $ConfigFilePath 

[Xml]$configParameters = (Get-Content $ConfigFilePath) 

$services = $configParameters.DeploymentConfiguration.Microservices 

if (!$ArtifactPath) 
{ 
    $ArtifactPath = $LocalFolder 
} 

$ApplicationPackageFiles = Get-ChildItem -Path $ArtifactPath -Filter ApplicationManifest.xml -Recurse -Force -ErrorAction SilentlyContinue 

foreach($ApplicationPackageFile in $ApplicationPackageFiles) 
{ 
    $ApplicationPackagePath = Split-Path -Parent -Path $($ApplicationPackageFile.FullName) 
    $ProjectName = Split-Path $ApplicationPackagePath -Leaf 
    Write-Host "Start PowerShell script to deploy Microservice to Service Fabric: ApplicationPackageName: $($ProjectName)" 

    $ScriptBlock = [ScriptBlock]::Create("$DeployScriptFile -ApplicationPackagePath '$ApplicationPackagePath'") 

    Invoke-Command -ScriptBlock $ScriptBlock 
} 

Read-Host -Prompt "Press Enter to exit" 
+1

Debbuging?是$ ApplicationPackageFiles变量中的东西吗? – guiwhatsthat

回答

1

我在做什么错?我如何获得所有要执行的行?

看来你的代码没有问题。我假设$ApplicationPackageFiles变量中没有任何内容,所以foreach子句不会被执行。

您有下列方式之一进行调试:

1.打印的$ ApplicationPackageFiles变量输出信息前控制台直接

Write-Host "ApplicationPackageFiles value: $ApplicationPackageFiles" 

2.增加和foreach后进行检查。

Write-Host "Before loop..." 
foreach($ApplicationPackageFile in $ApplicationPackageFiles) 
{ 
    xxxxx 
} 
Write-Host "After loop..."