2017-10-11 40 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..." 
相關問題