Bagikan melalui


PowerShell@2 - Tugas PowerShell v2

Gunakan tugas ini untuk menjalankan skrip PowerShell di Linux, macOS, atau Windows.

Nota

Secara default, PowerShell v2 menggunakan PowerShell Core untuk agen Linux dan Windows PowerShell untuk agen Windows. Untuk menggunakan versi terbaru PowerShell pada agen Windows, atur parameter pwsh ke true. PowerShell Core kemudian akan digunakan sebagai gantinya.

Sintaksis

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

Masukan

Jenis targetType -
string. Nilai yang diizinkan: filePath (Jalur File), inline. Nilai default: filePath.

Menentukan jenis skrip untuk menjalankan tugas: skrip sebaris atau jalur ke file .ps1.


Jalur Skrip filePath -
string. Diperlukan saat targetType = filePath.

Menentukan jalur skrip yang akan dijalankan. Harus merupakan jalur yang sepenuhnya memenuhi syarat atau relatif terhadap $(System.DefaultWorkingDirectory).


Argumen
string. Fakultatif. Gunakan saat targetType = filePath.

Menentukan argumen yang diteruskan ke skrip PowerShell. Argumen dapat berupa parameter ordinal atau parameter bernama. Contohnya, -Name someName -Path -Value "Some long string value".

arguments tidak digunakan saat targetType diatur ke inline.


Skrip script -
string. Diperlukan saat targetType = inline. Nilai default: # Write your PowerShell commands here.\n\nWrite-Host "Hello World".

Menentukan isi skrip. Panjang skrip sebaris maksimum yang didukung adalah 20000 karakter. Gunakan skrip dari file jika Anda ingin menggunakan skrip yang lebih panjang.


errorActionPreference - ErrorActionPreference
string. Nilai yang diizinkan: default, stop, continue, silentlyContinue. Nilai default: stop.

Menambahkan baris sebelumnya $ErrorActionPreference = 'VALUE' di bagian atas skrip Anda.


errorActionPreference - ErrorActionPreference
string. Nilai yang diizinkan: stop, continue, silentlyContinue. Nilai default: stop.

Menambahkan baris sebelumnya $ErrorActionPreference = 'VALUE' di bagian atas skrip Anda.


warningPreference - WarningPreference
string. Nilai yang diizinkan: default, stop, continue, silentlyContinue. Nilai default: default.

Saat tidak diatur ke Default, tambahkan baris $WarningPreference = 'VALUE' di bagian atas skrip Anda.


informationPreference - InformationPreference
string. Nilai yang diizinkan: default, stop, continue, silentlyContinue. Nilai default: default.

Saat tidak diatur ke Default, tambahkan baris $InformationPreference = 'VALUE' di bagian atas skrip Anda.


verbosePreference - VerbosePreferensi
string. Nilai yang diizinkan: default, stop, continue, silentlyContinue. Nilai default: default.

Saat tidak diatur ke Default, tambahkan baris $VerbosePreference = 'VALUE' di bagian atas skrip Anda.


DebugPreferensi debugPreference -
string. Nilai yang diizinkan: default, stop, continue, silentlyContinue. Nilai default: default.

Saat tidak diatur ke Default, tambahkan baris $DebugPreference = 'VALUE' di bagian atas skrip Anda.


ProgressPreference progressPreference -
string. Nilai yang diizinkan: default, stop, continue, silentlyContinue. Nilai default: silentlyContinue.

Saat tidak diatur ke Default, tambahkan baris $ProgressPreference = 'VALUE' di bagian atas skrip Anda.


failOnStderr - Gagal pada Kesalahan Standar
boolean. Nilai default: false.

Jika nilai boolean ini true, tugas gagal jika ada kesalahan yang ditulis ke alur kesalahan atau jika ada data yang ditulis ke aliran Kesalahan Standar. Jika tidak, tugas bergantung pada kode keluar untuk menentukan kegagalan.


showWarnings - Tampilkan peringatan sebagai peringatan Azure DevOps
boolean. Nilai default: false.

Jika nilai diatur ke true, dan skrip Anda menulis peringatan, maka peringatan akan muncul sebagai peringatan dalam log Alur.


ignoreLASTEXITCODE - Abaikan $LASTEXITCODE
boolean. Nilai default: false.

Jika nilai diatur ke false, baris if ((Test-Path -LiteralPath variable:\LASTEXITCODE)) { exit $LASTEXITCODE } ditambahkan ke akhir skrip Anda. Ini akan menyebabkan kode keluar terakhir dari perintah eksternal disebarluaskan sebagai kode keluar powershell. Jika tidak, baris tidak ditambahkan ke akhir skrip Anda.


pwsh - Menggunakan PowerShell Core
boolean. Nilai default: false.

Jika ini benar, maka tugas yang berjalan pada agen Windows akan menggunakan pwsh.exe dari jalur Anda alih-alih powershell.exe.


Direktori Kerja
string.

Menentukan direktori kerja tempat skrip dijalankan. Jika nilai tidak ditentukan, direktori kerja $(Build.SourcesDirectory).


runScriptInSeparateScope - Jalankan skrip dalam cakupan terpisah
boolean. Nilai default: false.

Input ini memungkinkan eksekusi skrip PowerShell menggunakan operator & alih-alih .default . Jika input ini diatur ke true, skrip akan dijalankan dalam cakupan terpisah, dan variabel PowerShell yang terlingkup secara global tidak akan diperbarui.


Opsi kontrol tugas

Semua tugas memiliki opsi kontrol selain input tugasnya. Untuk informasi selengkapnya, lihat opsi Kontrol dan properti tugas umum.

Variabel output

Tidak ada.

Komentar

Setiap sesi PowerShell hanya berlangsung selama durasi pekerjaan di mana ia berjalan. Tugas yang bergantung pada apa yang telah di-bootstrap harus berada dalam pekerjaan yang sama dengan bootstrap.

Pintasan tugas

PowerShell@2 memiliki dua pintasan di YAML: steps.powershell dan steps.pwsh.

  • powershell berjalan menggunakan Windows PowerShell (di Windows) atau pwsh (Linux dan macOS).
  • pwsh menjalankan PowerShell Core, edisi lintas platform PowerShell yang dibangun di .NET Core.
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.

Mengatur variabel sehingga dapat dibaca oleh skrip dan tugas berikutnya

Untuk mempelajari selengkapnya tentang menentukan variabel build dalam skrip, lihat Menentukan dan memodifikasi variabel build Anda dalam skrip.

Untuk mempelajari selengkapnya tentang menentukan variabel rilis dalam skrip, lihat Menentukan dan memodifikasi variabel rilis Anda dalam skrip.

Meneruskan rahasia alur dalam skrip, tetapi rahasia tidak diselubungi dalam log alur

Ketahuilah bahwa PowerShell memotong pesan kesalahan, jadi jika Anda menggunakan rahasia alur dalam skrip, rahasia dapat dipangkas dan diekspos. Misalnya, dalam skrip sebaris di bawah ini:

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

Mungkin ada pengecualian seperti: At <path_to_temp_script_file>:4 char:3:

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

Untuk menghindari masalah ini, Anda dapat menangani pengecualian ini pada tingkat skrip, atau menghindari kasus ketika rahasia alur dapat muncul di baris kode sumber dalam pesan kesalahan.

Contoh

Memanggil skrip dari file

Berikut ini adalah contoh file PowerShell bernama test.ps1 yang terletak di akar repositori Anda.

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

Anda dapat memanggil skrip ini di alur Anda seperti ini.

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

Menulis peringatan

- 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

Menulis kesalahan

- 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

Jika Anda ingin kesalahan ini gagal dalam build, tambahkan exit 1 ke skrip.

- 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

Memanggil skrip PowerShell dengan beberapa argumen

Buat skrip PowerShell test2.ps1:

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

Di alur YAML Anda, panggil:

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

Persyaratan

Persyaratan Deskripsi
Jenis alur YAML, Build klasik, Rilis klasik
Berjalan pada Agen, DeploymentGroup
Permintaan Tidak
Kemampuan Tugas ini tidak memenuhi tuntutan apa pun untuk tugas berikutnya dalam pekerjaan.
pembatasan Perintah Apapun
variabel yang Dapat Diatur Apapun
Versi agen 2.115.0 atau lebih tinggi
Kategori tugas Utilitas

Lihat juga