2015-09-09 103 views
0

嘗試將for循環的索引值追加到字符串末尾,但我在獲取所需結果時遇到了一些問題。將追加數字添加到Powershell for循環中的字符串結尾

這裏是我工作的一小段代碼:

編輯:

$apiKey = "ZZZ-ZZZZZ" 
$octoHeader = @{ "X-Octopus-ApiKey" = $apiKey } 

# GET Source deployment process from Deployment Scaffold project 
$json = irm "http://octopusserver/api/deploymentprocesses/deploymentprocess-projects-123" -Headers $octoHeader 

$DeploymentSteps = $json.Steps 

# Hash table to hold steps 
$steps = @{} 

function Get-StepType 
(
    $StepType 
) 
{ 
    foreach ($Step in $DeploymentSteps | where { $_.Name -eq $StepType }) 
    { 
    return $Step 
    } 
} 

function Copy-Steps 
(
    $StepType, 
    $StepCount 
) 
{ 
    $Step = Get-StepType -StepType $StepType 

    1..$StepCount | % { 

    $Step.Id = '' 
    $Step.Name += $_ 

    # Add step to hash 
    $steps.Add("step$($steps.Count + 1)", $step) 
    } 
} 

Copy-Steps -StepType 'Service' -StepCount 2 

$steps 

這是結果:

Name       Value                                  
----       -----                                  
step1       @{Id=; Name=Service12; Actions=S... 
step2       @{Id=; Name=Service12; Actions=S... 

結果我之後:名稱=服務 - 1,名稱=服務 - 2等我看到發生了什麼,但我不知道正確的方式來獲得我後。

任何幫助,非常感謝。

回答

1

在你的函數實際上覆制的步驟:

function Copy-Steps 
(
    $StepType, 
    $StepCount 
) 
{ 
    $OriginalStep = Get-StepType -StepType $StepType 

    1..$StepCount | % { 

    $Step=$OriginalStep.PSObject.Copy() 
    $Step.Id = '' 
    $Step.Name += $_ 

    # Add step to hash 
    $steps.Add("step$($steps.Count + 1)", $step) 
    } 
} 
1
1..5 | % { [String]::Format("Step {0}", $_) } 

Copy-Steps你需要點左右

+0

相同的結果。 刪除內部foreach以簡化一點: 1 .. $ StepCount | $ {Step.Id =''' $ Step.Name = [String] steps.Count + 1)「,$ step) } – AspiringTFSGuru

相關問題