PowerShell görevi

Azure Pipelines | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018-TFS 2015

PowerShell betiğini çalıştırmak için bu görevi kullanın.

Not

Microsoft Team Foundation Server (TFS) 2018 ve önceki sürümlerde, derleme ve yayın işlem hatlarıtanımlarolarak adlandırılır, çalışmalaraderlemelerdenir, hizmet bağlantılarınahizmet uç noktalarıdenir, aşamalarortamlarolarak adlandırılır ve işleraşamalarolarak adlandırılır.

Erişim

  • DotNetFramework

YAML kod parçacığı

# PowerShell
# Run a PowerShell script on Linux, macOS, or Windows
- task: PowerShell@2
  inputs:
    #targetType: 'filePath' # Optional. Options: filePath, inline
    #filePath: # Required when targetType == FilePath
    #arguments: # Optional
    #script: '# Write your PowerShell commands here.Write-Host Hello World' # Required when targetType == Inline
    #errorActionPreference: 'stop' # Optional. Options: default, stop, continue, silentlyContinue
    #warningPreference: 'default' # Optional. Options: default, stop, continue, silentlyContinue
    #informationPreference: 'default' # Optional. Options: default, stop, continue, silentlyContinue
    #verbosePreference: 'default' # Optional. Options: default, stop, continue, silentlyContinue
    #debugPreference: 'default' # Optional. Options: default, stop, continue, silentlyContinue
    #failOnStderr: false # Optional
    #ignoreLASTEXITCODE: false # Optional
    #pwsh: false # Optional
    #workingDirectory: # Optional

YAML 'de PowerShell görevinin iki kısayolu de vardır:

- powershell:  # inline script
  workingDirectory:  #
  displayName:  #
  failOnStderr:  #
  errorActionPreference:  #
  warningPreference:  #
  informationPreference:  #
  verbosePreference:  #
  debugPreference:  #
  ignoreLASTEXITCODE:  #
  env:  # mapping of environment variables to add
- pwsh:  # inline script
  workingDirectory:  #
  displayName:  #
  failOnStderr:  #
  errorActionPreference:  #
  warningPreference:  #
  informationPreference:  #
  verbosePreference:  #
  debugPreference:  #
  ignoreLASTEXITCODE:  #
  env:  # mapping of environment variables to add

Her ikisi de göreve çözümlenme PowerShell@2 . powershellWindows PowerShell çalıştırır ve yalnızca bir Windows aracısında çalışır. pwsh , aracıya veya kapsayıcıya yüklenmesi gereken PowerShell Core 'u çalıştırır.

Not

Her PowerShell oturumu yalnızca çalıştığı işin süresi boyunca sürer. Önyüklendi 'e bağlı olan görevler, önyükleme ile aynı işte olmalıdır.

Bağımsız değişkenler

Bağımsız DeğişkenAçıklama
targetType
Tür
Seçim Bunun satır içi bir betik mi yoksa bir dosyanın yolu mı olduğunu ayarlar .ps1 . Varsayılan olarak filepath
Varsayılan değer: filePath
filePath
Betik yolu
Istenir Yürütülecek betiğin yolu. Tam olarak nitelenmiş bir yol veya göreli olmalıdır $(System.DefaultWorkingDirectory) . Tür ise gereklidir filePath
arguments
Bağımsız değişkenler
Seçim PowerShell betiğine geçirilen bağımsız değişkenler.
Örneğin, -Name someName -Path -Value "Some long string value"

Note: tür olduğunda kullanılmıyor inline .
script
Komut Dosyası
Istenir Betiğin içeriği. TargetType ise gereklidir inline .
Desteklenen en fazla satır içi betik uzunluğu 32766 karakterdir. Bundan daha fazlasına ihtiyacınız varsa, dosyasındaki betiği kullanın.
Varsayılan değer: # PowerShell komutlarınızı buraya yazın.
Write-Host "Merhaba Dünya"
errorActionPreference
ErrorActionPreference
Seçim "Varsayılan" olmadığında, satır, $ErrorActionPreference = 'VALUE' betiğinizin en üstüne eklenir
Varsayılan değer: durdur
warningPreference
WarningPreference
Seçim "Varsayılan" olmadığında, satır, $WarningPreference = 'VALUE' betiğinizin en üstüne eklenir
Varsayılan değer: varsayılan
informationPreference
Informationpreference
Seçim "Varsayılan" olmadığında, satır, $InformationPreference = 'VALUE' betiğinizin en üstüne eklenir
Varsayılan değer: varsayılan
verbosePreference
VerbosePreference
Seçim "Varsayılan" olmadığında, satır, $VerbosePreference = 'VALUE' betiğinizin en üstüne eklenir
Varsayılan değer: varsayılan
debugPreference
DebugPreference
Seçim "Varsayılan" olmadığında, satır, $DebugPreference = 'VALUE' betiğinizin en üstüne eklenir
Varsayılan değer: varsayılan
failOnStderr
Standart hatada başarısız oldu
Seçim Bu doğruysa, hata ardışık düzenine herhangi bir hata yazılmışsa veya standart hata akışına herhangi bir veri yazılmışsa, bu görev başarısız olur. Aksi takdirde görev, hatayı belirlemede çıkış koduna güvenir
Varsayılan değer: false
ignoreLASTEXITCODE
$LASTEXITCODE yoksay
Seçim Bu yanlışsa, satır if ((Test-Path -LiteralPath variable:\\LASTEXITCODE)) { exit $LASTEXITCODE } betiğinizin sonuna eklenir. Bu, dış komuttan gelen son çıkış kodunun, PowerShell çıkış kodu olarak yayılmasına neden olur. Aksi takdirde satır, betiğinizin sonuna eklenmez
Varsayılan değer: false
pwsh
PowerShell Core kullanın
Seçim bu true ise Windows görev, powershell.exe yerine yolunuzda pwsh.exe kullanacaktır
Varsayılan değer: false
workingDirectory
Çalışma dizini
Seçim Komutunu çalıştırmak istediğiniz çalışma dizinini belirtin. Boş bırakırsanız, çalışma dizini $(Build.SourcesDirectory)
Ortam değişkenleriİşlemin ortamıyla eşlenecek ek öğelerin listesi. Örneğin, gizli değişkenler otomatik olarak eşlenmedi. Adında bir gizli değişkeniniz varsa Foo , bunu şöyle eşleştirebilirsiniz:


- powershell: echo $env:MYSECRET
  env:
    MySecret: $(Foo)

Örnekler

Hello World

test.ps1Deponuzın kökünde oluşturun:

Write-Host "Hello World from $Env:AGENT_NAME."
Write-Host "My ID is $Env:AGENT_ID."
Write-Host "AGENT_WORKFOLDER contents:"
gci $Env:AGENT_WORKFOLDER
Write-Host "AGENT_BUILDDIRECTORY contents:"
gci $Env:AGENT_BUILDDIRECTORY
Write-Host "BUILD_SOURCESDIRECTORY contents:"
gci $Env:BUILD_SOURCESDIRECTORY
Write-Host "Over and out."

Derleme işlem hattının Build sekmesinde şu görevi ekleyin:

Görev Bağımsız değişkenler

Yardımcı program: PowerShell
test.ps1 çalıştırın.

Betik dosya adı:

Uyarı yazma

PowerShell görevini ekleyin, türü olarak ayarlayın ve bu komut dosyasına yapıştırın:

# Writes a warning to build summary and to log in yellow text
Write-Host  "##vso[task.LogIssue type=warning;]This is the warning"

Bir hata yazın

PowerShell görevini ekleyin, türü olarak ayarlayın ve bu komut dosyasına yapıştırın:

# Writes an error to build summary and to log in red text
Write-Host  "##vso[task.LogIssue type=error;]This is the error"

İpucu

Bu hatanın derlemeyi başarısız olmasını istiyorsanız şu satırı ekleyin:

exit 1

ApplyVersionToAssemblies.ps1

Derleme işlem hattınızı özelleştirmek için bir komut dosyası kullanın

Birden çok bağımsız değişkenle PowerShell betiğini çağırma

PowerShell betiği oluştur test2.ps1 :

param ($input1, $input2)
Write-Host "$input1 $input2"

YAML ardışık düzeninde şunu arayın:

- task: PowerShell@2
  inputs:
    targetType: 'filePath'
    filePath: $(System.DefaultWorkingDirectory)\test2.ps1
    arguments: > # Use this to avoid newline characters in multiline string
      -input1 "Hello"
      -input2 "World"
  displayName: 'Print Hello World'

Açık kaynak

Bu görev GitHubaçık kaynağıdır. Geribildirim ve katılımlar hoş geldiniz.

SSS

PowerShell betikleri hakkında nereden bilgi edinebilirim?

Windows PowerShell ile Betik Oluşturma

Microsoft betik Merkezi (komut dosyası Guyları)

Windows PowerShell Öğreticisi

PowerShell.org

Nasıl yaparım? betikler ve görevler tarafından okunsun diye bir değişken ayarlamak mı gerekir?

Bir betikte derleme değişkenlerini tanımlama hakkında daha fazla bilgi edinmek için bkz. Betikte derleme değişkenlerinizi tanımlama ve değiştirme.

Bir betikte yayın değişkenlerini tanımlama hakkında daha fazla bilgi edinmek için bkz. Betikte yayın değişkenlerinizi tanımlama ve değiştirme

S: Yapıtlarımı yayımlamayla ilgili sorunm var. Ayrıntılı günlükleri nasıl görüntüleyebilirsiniz?

İşlem hattınız için ayrıntılı günlükleri etkinleştirmek için:

  1. İşlem hattınızı düzenleyin ve Değişkenler'i seçin
  2. Ad ve değere sahip yeni bir System.Debug değişken ekleme true
  3. Kaydet

S: Hangi değişkenler kullanılabilir?

A: $(Build.SourcesDirectory)$(Agent.BuildDirectory) ve, işlem hattında kullanabileceğiniz değişkenlerden yalnızca birkaçıdır. Değişkenler ifade veya betik olarak kullanılabilir.

Farklı değişken türleri hakkındabilgi edinmek için bkz.Değişkenleri tanımlama, önceden tanımlanmış değişkenler ve Klasik sürüm ve yapıt değişkenleri.

S: Görev yaml işlem hattında dağıtım iş yerinde yapıtları yayımlamama olanak sağlar, ancak bunu aşağı akış işlem hattında kullana değilim.

A: Dağıtım işleri kaynak dalların bağlamına sahip değildir ve bu nedenle yapıtları yayımlamak için uygun değildir. Bunlar öncelikli olarak yapıtları tüketmek üzere tasarlanmıştır. Geçici çözüm, bu mantığı ayrı bir iş (dağıtım işlerinize bağımlılıklar ile) halinde yalıtmaktır.

Bir aracıya ihtiyacım var mı?

Derlemenizi veya yayınını çalıştırmak için en az bir aracı gerekir.

Sorunlarımız var. Bunları nasıl gidererim?

Bkz. Derleme ve Sürüm Sorunlarını Giderme.

Varsayılan aracı havuzunu seçe değilim ve derlememi veya sürümümi kuyruğa ala bilmiyorum. Nasıl yaparım? düzeltebilir misiniz?

Bkz. Aracı havuzları.

My NuGet görev şu hatayla başarısız oluyor: "Hata: yerel sertifikayı verdiremiyor". Bunu nasıl düzeltebilirim?

Bu, güvenilen bir kök sertifika ekerek düzeltilmiştir. Ortam değişkenini derleme NODE_EXTRA_CA_CERTS=file aracınıza ekleyebilir veya görev değişkenini işlem NODE.EXTRA.CA.CERTS=file hattınıza ebilirsiniz. Bu Node.js hakkında daha fazla bilgi için bkz.Node.js belgeleri. İşlem hattınıza değişken ayarlama hakkında yönergeler için bkz. İşlem hattında değişken ayarlama.

Şirket içi TFS'yi kullanıyor ve bu özelliklerden bazılarını göremiyorum. Neden olmasın?

Bu özelliklerden bazıları yalnızca şirket Azure Pipelines şirket içinde kullanılamaz. TFS'nin en son sürümüne yükseltme yaptıysanız bazı özellikler şirket içinde kullanılabilir.