Aracılığıyla paylaş


PowerShell@2 - PowerShell v2 görevi

Linux, macOS veya Windows üzerinde powershell betiği çalıştırmak için bu görevi kullanın.

Uyarı

PowerShell v2 varsayılan olarak Linux aracıları için PowerShell Core ve Windows aracıları için Windows PowerShell kullanır. Windows aracılarında PowerShell'in en son sürümünü kullanmak için pwsh parametresini trueolarak ayarlayın. Bunun yerine PowerShell Core kullanılır.

Sözdizimi

# PowerShell v2
# Run a PowerShell script on Linux, macOS, or Windows.
- task: PowerShell@2
  inputs:
    #targetType: 'filePath' # 'filePath' | 'inline'. Type. Default: filePath.
    filePath: # string. Required when targetType = filePath. Script Path. 
    #arguments: # string. Optional. Use when targetType = filePath. Arguments. 
    #script: # string. Required when targetType = inline. Script. 
  # Preference Variables
    #errorActionPreference: 'stop' # 'default' | 'stop' | 'continue' | 'silentlyContinue'. ErrorActionPreference. Default: stop.
    #warningPreference: 'default' # 'default' | 'stop' | 'continue' | 'silentlyContinue'. WarningPreference. Default: default.
    #informationPreference: 'default' # 'default' | 'stop' | 'continue' | 'silentlyContinue'. InformationPreference. Default: default.
    #verbosePreference: 'default' # 'default' | 'stop' | 'continue' | 'silentlyContinue'. VerbosePreference. Default: default.
    #debugPreference: 'default' # 'default' | 'stop' | 'continue' | 'silentlyContinue'. DebugPreference. Default: default.
    #progressPreference: 'silentlyContinue' # 'default' | 'stop' | 'continue' | 'silentlyContinue'. ProgressPreference. Default: silentlyContinue.
  # Advanced
    #failOnStderr: false # boolean. Fail on Standard Error. Default: false.
    #showWarnings: false # boolean. Show warnings as Azure DevOps warnings. Default: false.
    #ignoreLASTEXITCODE: false # boolean. Ignore $LASTEXITCODE. Default: false.
    #pwsh: false # boolean. Use PowerShell Core. Default: false.
    #workingDirectory: # string. Working Directory. 
    #runScriptInSeparateScope: false # boolean. Run script in the separate scope. Default: false.
# PowerShell v2
# Run a PowerShell script on Linux, macOS, or Windows.
- task: PowerShell@2
  inputs:
    #targetType: 'filePath' # 'filePath' | 'inline'. Type. Default: filePath.
    filePath: # string. Required when targetType = filePath. Script Path. 
    #arguments: # string. Optional. Use when targetType = filePath. Arguments. 
    #script: # string. Required when targetType = inline. Script. 
  # Preference Variables
    #errorActionPreference: 'stop' # 'default' | 'stop' | 'continue' | 'silentlyContinue'. ErrorActionPreference. Default: stop.
    #warningPreference: 'default' # 'default' | 'stop' | 'continue' | 'silentlyContinue'. WarningPreference. Default: default.
    #informationPreference: 'default' # 'default' | 'stop' | 'continue' | 'silentlyContinue'. InformationPreference. Default: default.
    #verbosePreference: 'default' # 'default' | 'stop' | 'continue' | 'silentlyContinue'. VerbosePreference. Default: default.
    #debugPreference: 'default' # 'default' | 'stop' | 'continue' | 'silentlyContinue'. DebugPreference. Default: default.
  # Advanced
    #failOnStderr: false # boolean. Fail on Standard Error. Default: false.
    #showWarnings: false # boolean. Show warnings as Azure DevOps warnings. Default: false.
    #ignoreLASTEXITCODE: false # boolean. Ignore $LASTEXITCODE. Default: false.
    #pwsh: false # boolean. Use PowerShell Core. Default: false.
    #workingDirectory: # string. Working Directory. 
    #runScriptInSeparateScope: false # boolean. Run script in the separate scope. Default: false.
# PowerShell v2
# Run a PowerShell script on Linux, macOS, or Windows.
- task: PowerShell@2
  inputs:
    #targetType: 'filePath' # 'filePath' | 'inline'. Type. Default: filePath.
    filePath: # string. Required when targetType = filePath. Script Path. 
    #arguments: # string. Optional. Use when targetType = filePath. Arguments. 
    #script: # string. Required when targetType = inline. Script. 
    #errorActionPreference: 'stop' # 'stop' | 'continue' | 'silentlyContinue'. ErrorActionPreference. Default: stop.
  # Advanced
    #failOnStderr: false # boolean. Fail on Standard Error. Default: false.
    #showWarnings: false # boolean. Show warnings as Azure DevOps warnings. Default: false.
    #ignoreLASTEXITCODE: false # boolean. Ignore $LASTEXITCODE. Default: false.
    #pwsh: false # boolean. Use PowerShell Core. Default: false.
    #workingDirectory: # string. Working Directory.
# PowerShell v2
# Run a PowerShell script on Linux, macOS, or Windows.
- task: PowerShell@2
  inputs:
    #targetType: 'filePath' # 'filePath' | 'inline'. Type. Default: filePath.
    filePath: # string. Required when targetType = filePath. Script Path. 
    #arguments: # string. Optional. Use when targetType = filePath. Arguments. 
    #script: # string. Required when targetType = inline. Script. 
    #errorActionPreference: 'stop' # 'stop' | 'continue' | 'silentlyContinue'. ErrorActionPreference. Default: stop.
  # Advanced
    #failOnStderr: false # boolean. Fail on Standard Error. Default: false.
    #ignoreLASTEXITCODE: false # boolean. Ignore $LASTEXITCODE. Default: false.
    #pwsh: false # boolean. Use PowerShell Core. Default: false.
    #workingDirectory: # string. Working Directory.

Girişler

targetType - Tür
string. İzin verilen değerler: filePath (Dosya Yolu), inline. Varsayılan değer: filePath.

Görevin çalıştırılacak betiğin türünü belirtir: satır içi betik veya .ps1 dosyasının yolu.


filePath - Betik Yolu
string. targetType = filePathgerekir.

Yürütülecek betiğin yolunu belirtir. Tam yol veya $(System.DefaultWorkingDirectory)göreli olmalıdır.


bağımsız değişkenleri
string. Opsiyonel. targetType = filePatholduğunda kullanın.

PowerShell betiğine geçirilen bağımsız değişkenleri belirtir. Bağımsız değişkenler sıralı parametreler veya adlandırılmış parametreler olabilir. Örneğin, -Name someName -Path -Value "Some long string value".

arguments targetTypeolarak ayarlandığında inline kullanılmaz.


script - Betik
string. targetType = inlinegerekir. Varsayılan değer: # Write your PowerShell commands here.\n\nWrite-Host "Hello World".

Betiğin içeriğini belirtir. Desteklenen satır içi betik uzunluğu üst sınırı 20000 karakterdir. Daha uzun bir betik kullanmak istiyorsanız bir dosyadan betik kullanın.


errorActionPreference - ErrorActionPreference
string. İzin verilen değerler: default, stop, continue, silentlyContinue. Varsayılan değer: stop.

Betiğinizin en üstüne satır $ErrorActionPreference = 'VALUE' ekler.


errorActionPreference - ErrorActionPreference
string. İzin verilen değerler: stop, continue, silentlyContinue. Varsayılan değer: stop.

Betiğinizin en üstüne satır $ErrorActionPreference = 'VALUE' ekler.


warningPreference - WarningPreference (Uyarı Tercihi)
string. İzin verilen değerler: default, stop, continue, silentlyContinue. Varsayılan değer: default.

Defaultolarak ayarlanmadığında, betiğinizin en üstüne $WarningPreference = 'VALUE' satırı ekler.


informationPreference - BilgileriÖnerlik
string. İzin verilen değerler: default, stop, continue, silentlyContinue. Varsayılan değer: default.

Defaultolarak ayarlanmadığında, betiğinizin en üstüne $InformationPreference = 'VALUE' satırı ekler.


verbosePreference - AyrıntıPreference
string. İzin verilen değerler: default, stop, continue, silentlyContinue. Varsayılan değer: default.

Defaultolarak ayarlanmadığında, betiğinizin en üstüne $VerbosePreference = 'VALUE' satırı ekler.


debugPreference - Hata Ayıklama Tercihi
string. İzin verilen değerler: default, stop, continue, silentlyContinue. Varsayılan değer: default.

Defaultolarak ayarlanmadığında, betiğinizin en üstüne $DebugPreference = 'VALUE' satırı ekler.


İlerlemeyi progressPreference - Önerişim
string. İzin verilen değerler: default, stop, continue, silentlyContinue. Varsayılan değer: silentlyContinue.

Defaultolarak ayarlanmadığında, betiğinizin en üstüne $ProgressPreference = 'VALUE' satırı ekler.


standart hatabaşarısız failOnStderr -
boolean. Varsayılan değer: false.

Bu boole değerinin değeri trueise, hata işlem hattına herhangi bir hata yazılırsa veya Standart Hata akışına herhangi bir veri yazılırsa görev başarısız olur. Aksi takdirde, görev hata belirlemek için çıkış koduna dayanır.


showWarnings - Uyarıları Azure DevOps uyarıları olarak göster
boolean. Varsayılan değer: false.

Değer trueolarak ayarlanırsa ve betiğiniz uyarılar yazarsa, uyarılar İşlem hattı günlüklerinde uyarı olarak görünür.


ignoreLASTEXITCODE - Yoksay $LASTEXITCODE
boolean. Varsayılan değer: false.

Değer falseolarak ayarlanırsa, if ((Test-Path -LiteralPath variable:\LASTEXITCODE)) { exit $LASTEXITCODE } satırı betiğinizin sonuna eklenir. Bu, dış komuttan son çıkış kodunun powershellçıkış kodu olarak yayılmasına neden olur. Aksi takdirde, satır betiğinizin sonuna eklenmez.


pwsh - PowerShell Core kullanma
boolean. Varsayılan değer: false.

Bu doğruysa, Windows aracılarında çalışan görevler pwsh.exeyerine yolunuzdan powershell.exe kullanır.


çalışma dizini
string.

Betiğin çalıştırıldığı çalışma dizinini belirtir. Bir değer belirtilmezse, çalışma dizini $(Build.SourcesDirectory)olur.


runScriptInSeparateScope - Betiği ayrı kapsamda çalıştır
boolean. Varsayılan değer: false.

Bu giriş, varsayılan &yerine . işlecini kullanarak PowerShell betiklerinin yürütülmesine olanak tanır. Bu giriş trueolarak ayarlanırsa betik ayrı bir kapsamda yürütülür ve genel kapsamlı PowerShell değişkenleri güncelleştirilmez.


Görev denetimi seçenekleri

Tüm görevlerin, görev girişlerine ek olarak denetim seçenekleri vardır. Daha fazla bilgi için bkz. Denetim seçenekleri ve ortak görev özellikleri.

Çıkış değişkenleri

Yok.

Açıklamalar

Her PowerShell oturumu yalnızca çalıştığı işin süresi boyunca sürer. Önyüklemenin ne olduğuna bağlı olan görevler, bootstrap ile aynı işte olmalıdır.

Görev kısayolları

PowerShell@2 YAML'de iki kısayol vardır: steps.powershell ve steps.pwsh.

  • powershell, Windows PowerShell (Windows üzerinde) veya pwsh (Linux ve macOS) kullanarak çalışır.
  • pwsh, .NET Core üzerinde oluşturulan PowerShell'in platformlar arası sürümü PowerShell Core'ı çalıştırır.
steps:
- powershell: # Run a script in Windows PowerShell on Windows, and pwsh on Linux and macOS.
- pwsh: # Run a script in PowerShell Core on Windows, macOS, and Linux.

Sonraki betikler ve görevler tarafından okunabilmesi için bir değişken ayarlayın

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.

Betikte yayın değişkenlerini tanımlama hakkında daha fazla bilgi edinmek için betikte yayın değişkenlerinizi tanımlama ve değiştirme bölümüne bakın.

İşlem hattı gizli dizilerini betikte geçirme, ancak gizli dizi işlem hattı günlüklerinde maskelenmez

PowerShell'in hata iletilerini kestiğini unutmayın; bu nedenle bir betikte işlem hattı gizli dizileri kullanırsanız gizli diziler kırpılabilir ve kullanıma sunulur. Örneğin, aşağıdaki satır içi betikte:

./script.ps1 --arg1 value1 --arg2 <some_secret_which_will_be_masked_here>

şöyle bir özel durum olabilir: At <path_to_temp_script_file>:4 char:3:

+   ./script.ps1 --arg1 value1 --arg2 <unmasked_part_of_original_secret> ...
+   ~~~~~~~~~~
    + <Additional exception details>

Bu sorunu önlemek için bu özel durumları bir betik düzeyinde işleyebilir veya işlem hattı gizli dizilerinin hata iletileri içindeki kaynak kod satırlarında görünebileceği durumlardan kaçınabilirsiniz.

Örnekler

Dosyadan betik çağırma

Aşağıda, deponuzun kökünde bulunan test.ps1 adlı örnek bir PowerShell dosyası verilmiştir.

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."

Bu betiği işlem hattınızda aşağıdaki gibi çağırabilirsiniz.

steps:
- task: PowerShell@2
  inputs:
    targetType: 'filePath'
    filePath: 'test.ps1'

Uyarı yazma

- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: Write-Host "##vso[task.LogIssue type=warning;]This is the warning"
    # Writes a warning to build summary and to log in yellow text

Hata yazma

- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: Write-Host "##vso[task.LogIssue type=error;]This is the error"
    # Writes an error to build summary and to log in red text

Bu hatanın derlemede başarısız olmasını istiyorsanız betike exit 1 ekleyin.

- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      Write-Host "##vso[task.LogIssue type=error;]This is the error"
      exit 1
    # Writes an error to build summary and to log in red text

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

test2.ps1PowerShell betiği oluşturma:

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

YAML işlem hattınızda şunları çağırabilirsiniz:

- 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'

Gereksinimler

Gereksinim Açıklama
İşlem hattı türleri YAML, Klasik derleme, Klasik sürüm
Üzerinde çalışır Agent, DeploymentGroup
Talepleri Hiç kimse
Özellikleri Bu görev, işteki sonraki görevler için herhangi bir talebi karşılamaz.
Komut kısıtlamaları Herhangi bir
Ayarlanabilir değişkenleri Herhangi bir
Aracı sürümü 2.115.0 veya üzeri
Görev kategorisi Fayda

Ayrıca bkz.