cómo Access Variable en Azure script btw Powershell en Dev Ops Pipeline

Sep 20 2020

En mi archivo yaml definí algunas variables que deberían contener el valor del mes ($MinorVersion)o año ($MajorVersion), estableciendo el valor en '$(Month)'y / o '$(Year:yy)'. Cuando los imprimo en el script de la tarea o en el PowerShell de la tarea, solo se muestra '$(Month)'y / o '$(Year:yy)'. El resultado esperado de la variable $(MajorVersion)es, por supuesto, el mes y el año actuales 09y 20.

¿Alguien puede decirme cómo puedo acceder a la variable $MinorVersionen el script de tarea / powershell para obtener el valor real de la misma? Ese es el contenido de los archivos:

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 salida solo muestra el contenido no evaluado de las variables:

Respuestas

1 LanceLi-MSFT Sep 21 2020 at 03:06

¿Alguien puede decirme cómo puedo acceder a la variable $ MinorVersion en el script de tarea / powershell para obtener su valor real?

Az devops no tiene tales variables de sistema o variables predefinidas como $(Year:yy)y $(Month). Las variables predefinidas disponibles se definen aquí , no podemos expandir $(Year:yy)y $(Month)porque no están predefinidas. En cuanto a value: '$(BuildID)', el formato correcto de BuildIDes en $(Build.BuildID)lugar de $(BuildID).

El $(Date:yyyyMMdd) and $(Rev:.r)son algo que sólo es válido para el número de compilación ( namepara la tubería yaml), documento relacionado aquí . Entonces, las variables normales no pueden expandir el valor de ellas, solo el nameelemento puede reconocerlas. Deberías usar:

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

En lugar de formato incorrecto:

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

Solución alternativa para obtener / definir variables con valor de fecha y hora:

Aunque las variables de Fecha y hora no están predefinidas, podemos poner un paso de PowerShell al comienzo de stepspara definir esas variables manualmente. Puede consultar link1 y link2 para obtener más detalles.

Entonces, si desea definir variables relacionadas con los datos, puede verificar el conjunto de variables en los 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)

Resultado de la segunda tarea de PS: