PowerShell@2 - PowerShell v2 görevi

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

Not

Varsayılan olarak, PowerShell v2 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 parametresini pwsh olarak trueayarlayın. Bunun yerine PowerShell Core kullanılacaktır.

Syntax

# 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.
# PowerShell v2
# Run a PowerShell script on Windows, macOS, or Linux.
- 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.

Çalıştırılacak görevin betiğinin türünü belirtir: satır içi betik veya dosyanın .ps1 yolu.


filePath - Betik Yolu
string. olduğunda targetType = filePathgereklidir.

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


arguments - Bağımsız değişken
string. İsteğe bağlı. when targetType = filePathkullanı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".

argumentsolarak ayarlandığında inlinekullanılmaztargetType.


script - Komut dosyası
string. olduğunda targetType = inlinegereklidir. 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.


script - Komut dosyası
string. olduğunda targetType = inlinegereklidir. Varsayılan değer: # Write your powershell commands here.\n\nWrite-Host "Hello World"\n\n# Use the environment variables input below to pass secret variables to this script..

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
string. İzin verilen değerler: default, stop, continue, silentlyContinue. Varsayılan değer: default.

olarak ayarlanmadığında Default, betiğinizin üst kısmındaki satırın $WarningPreference = 'VALUE' başına ekler.


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

olarak ayarlanmadığında Default, betiğinizin üst kısmındaki satırın $InformationPreference = 'VALUE' başına ekler.


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

olarak ayarlanmadığında Default, betiğinizin üst kısmındaki satırın $VerbosePreference = 'VALUE' başına ekler.


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

olarak ayarlanmadığında Default, betiğinizin üst kısmındaki satırın $DebugPreference = 'VALUE' başına ekler.


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

olarak ayarlanmadığında Default, betiğinizin üst kısmındaki satırın $ProgressPreference = 'VALUE' başına ekler.


failOnStderr - Standart Hatada Başarısız Oldu
boolean. Varsayılan değer: false.

Bu boole değerinin değeri ise true, hata işlem hattına herhangi bir hata yazılırsa veya herhangi bir veri Standart Hata akışına 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 olarak ayarlanırsa trueve betiğiniz uyarılar yazarsa, uyarılar İşlem hattı günlüklerinde uyarı olarak görünür.


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

Değer olarak ayarlanırsa false, satır if ((Test-Path -LiteralPath variable:\LASTEXITCODE)) { exit $LASTEXITCODE } betiğinizin sonuna eklenir. Bu, bir dış komuttan son çıkış kodunun çıkış kodu olarak yayılmasına powershellneden 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ıştırılan görevler yerine yolunuz powershell.exeüzerinden kullanılırpwsh.exe.


workingDirectory - Çalışma Dizini
string.

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


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

Bu giriş, PowerShell betiklerinin varsayılan .yerine işleç kullanılarak & yürütülmesini sağlar. Bu giriş olarak trueayarlanırsa betik ayrı bir kapsamda yürütülür ve genel kapsamlı PowerShell değişkenleri güncelleştirilmez.


Görev denetim seçenekleri

Tüm görevlerde 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ı görevlerin bootstrap ile aynı işte olması gerekir.

Görev kısayolları

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

  • powershellWindows 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'u ç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

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 bkz. Betikte yayın değişkenlerinizi tanımlama ve değiştirme.

İş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>

gibi 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 adlı test.ps1 ö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 betiğine ekleyin exit 1 .

- 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

PowerShell betiği test2.ps1oluş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ıştırılır Agent, DeploymentGroup
Talep Hiçbiri
Özellikler Bu görev, işteki sonraki görevler için herhangi bir talebi karşılamaz.
Komut kısıtlamaları Herhangi biri
Ayarlanabilir değişkenler Herhangi biri
Aracı sürümü 2.115.0 veya üzeri
Görev kategorisi Yardımcı Program

Ayrıca bkz.