comment la variable d'accès dans le script Azure btw Powershell dans le pipeline Dev Ops

Sep 20 2020

Dans mon fichier yaml, j'ai défini certaines variables qui devraient contenir la valeur du mois ($MinorVersion)ou de l'année ($MajorVersion), en définissant la valeur sur '$(Month)'et / ou '$(Year:yy)'. Lorsque je les imprime dans le script de tâche ou dans le PowerShell de tâche, il affiche uniquement '$(Month)'et / ou '$(Year:yy)'. La sortie attendue de la variable $(MajorVersion)est bien sûr le mois et l'année en cours 09et 20.

Quelqu'un peut-il me dire comment accéder à la variable $MinorVersiondans le script de tâche / PowerShell pour en obtenir la valeur réelle? C'est le contenu des fichiers:

trigger:
- master

pool:
  vmImage: 'windows-latest'

#import variable group resize-group, local variables are name/value pairs
variables:
- group: resize-group
- name: buildConfiguration
  value: 'Release'
- name: appxPackageDir
  value: '$(build.artifactStagingDirectory)\AppxPackages\\' - name: MajorVersion value: '$(Year:yy)'
- name: MinorVersion
  value: '$(Month)' - name: PatchVersion value: 45 - name: RevVersion value: '$(BuildID)'
- name: Packageappxmanifest
  value: Package.appxmanifest
- name: PackageVersion
  value: '$(MajorVersion).$(MinorVersion).$(PatchVersion).$(RevVersion)'


name: $(BuildDefinitionName)_$(MajorVersion).$(MinorVersion).$(PatchVersion)$(RevVersion) steps: - checkout: self submodules: true - script: | echo %MinorVersion% echo %variables.MinorVersion% echo $($[variables.MinorVersion]) echo ${{ variables.MinorVersion }} # outputs initialValue
     echo $(Month) echo $(MajorVersion)
     echo $(MinorVersion) echo $(RevVersion)
     echo $(PackageVersion) echo $(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r) - powershell: | Write-Host $env:MinorVersion
    Write-Host  $env:variables.MinorVersion% Write-Host "$env:MY_MAPPED_PACKAGEVERSION"
    Write-Host "$env:MY_MAPPED_REVVERSION"

La sortie affiche uniquement le contenu non évalué des variables:

Réponses

1 LanceLi-MSFT Sep 21 2020 at 03:06

Quelqu'un peut-il me dire comment accéder à la variable $ MinorVersion dans le script de tâche / powershell pour en obtenir la valeur réelle?

Az devops n'a pas de telles variables système ou des variables prédéfinies comme $(Year:yy)et $(Month). Les variables prédéfinies disponibles sont définies ici , nous ne pouvons pas les développer $(Year:yy)et $(Month)car elles ne sont pas prédéfinies. Quant à value: '$(BuildID)', le format correct de BuildIDest $(Build.BuildID)au lieu de $(BuildID).

Il $(Date:yyyyMMdd) and $(Rev:.r)s'agit de quelque chose qui n'est valable que pour le numéro de build ( namepour le pipeline yaml), document associé ici . Les variables normales ne peuvent donc pas augmenter leur valeur, seul l' nameélément peut les reconnaître. Tu devrais utiliser:

name: $(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.r)

Au lieu d'un format incorrect:

name: $(BuildDefinitionName)_$(MajorVersion).$(MinorVersion).xxx

Solution de contournement pour obtenir / définir des variables avec la valeur Date et heure:

Bien que les variables de Date time ne soient pas prédéfinies, nous pouvons placer une étape PowerShell au début de stepspour définir ces variables manuellement. Vous pouvez vérifier link1 et lien2 pour plus de détails.

Donc, si vous souhaitez définir des variables liées aux données, vous pouvez vérifier les variables d'ensemble dans les scripts :

- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      $year=$(Get-Date -Format 'yyyy')
      Write-Host "##vso[task.setvariable variable=MajorVersion]$year" $month=$(Get-Date -Format 'MM') Write-Host "##vso[task.setvariable variable=MinorVersion]$month"
      $day=$(Get-Date -Format 'dd')
      Write-Host "##vso[task.setvariable variable=DayOfMonth]$day" - powershell: | Write-Host $(MajorVersion)
    Write-Host  $(MinorVersion) Write-Host $(DayOfMonth)

Sortie de la deuxième tâche PS: