2016-05-09 75 views
2

我正在使用TFS 2015 Update 2創建發行版。我的發佈步驟之一是「目標機器上的PowerShell」任務,我正在使用它來應用DSC配置。如何在DSC腳本資源中引用腳本參數

我想使用腳本參數字段將參數從TFS傳遞到DSC腳本。

我的劇本是這樣的:

Param(
    [string]$data 
) 

configuration ApplyConfig 
{ 
    Script Backup { 
     SetScript = { 
      #do some stuff with $data 
     } 

     TestScript = { 
      Write-Output "Print param" 
      Write-Output $data 

      return $true 
     } 

     GetScript = { 
      return @{"Test" = "test data"} 
     } 
    } 
} 

ApplyConfig 

腳本的參數字段包含此:

-Destination "$(ApplicationPath)" 

然而,在這一點上,$數據似乎永遠是零。我如何將Script Arguments字段中定義的參數獲取到我的腳本資源中?

回答

2

當引用$數據在TestScript你所需要的 '使用' 範圍:

TestScript = { 
    Write-Output "Print param" 
    Write-Output $using:data 

    return $true 
} 

的TestScript上執行不同的PowerShell上下文; 'using'允許您在這些上下文中複製$ data的值。

1

我的靈活性建議是在你的DSC腳本中聲明一個配置散列表並傳入參數來配置它。我Continuous Delivery with TFS/VSTS – Server Configuration and Application Deployment with Release Management博客文章對如何使用DSC和TFS 2015年發佈管理更新2

獲取參數,然後成爲你的聲明參數如下的情況下,一個完整的演練:

param(
    [Parameter(Position=1)] 
    [string]$myFirstParameter, 
    [Parameter(Position=2)] 
    [string]$mySecondParameter 
) 

,然後在傳遞中的值直接:

腳本參數字段包含「myFirstValue」「mySecondValue」

或更好爲變量:

腳本參數字段包含$(myFirstValue)$(mySecondValue)

+0

這是一篇很棒的文章!但是,直到我使用其他答案中的$ using前綴時,我才能夠使用該配置技術。有什麼想法嗎? – kettch

+0

例如:Write-Verbose $ using:Node.NodeName -Verbose – kettch

+0

您不直接在DSC配置中使用參數 - 而是通過配置哈希表使用它們。我的文章顯示瞭如何做到這一點。 –