PowerShell@2 - Tugas PowerShell v2

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

Catatan

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

Sintaks

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

Input

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

Menentukan jenis skrip untuk tugas yang akan dijalankan: skrip sebaris atau jalur ke .ps1 file.


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

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


arguments - Argumen
string. Pilihan. 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 ketika targetType diatur ke inline.


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


script - Script
string. Diperlukan saat targetType = inline. Nilai default: # 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..

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 $ErrorActionPreference = 'VALUE' di bagian atas skrip Anda.


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

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


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

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


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

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


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

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


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

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


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

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


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

Jika nilai boolean ini adalah 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 di 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 dari 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.


workingDirectory - Direktori Kerja
string.

Menentukan direktori kerja tempat skrip dijalankan. Jika nilai tidak ditentukan, direktori kerja adalah $(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 dilingkup secara global tidak akan diperbarui.


Opsi kontrol tugas

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

Variabel output

Tidak ada.

Keterangan

Setiap sesi PowerShell hanya berlangsung selama durasi pekerjaan yang dijalankannya. 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.

  • powershellberjalan 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 ditutupi 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 test2.ps1PowerShell :

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 ada
Kemampuan Tugas ini tidak memenuhi tuntutan untuk tugas berikutnya dalam pekerjaan.
Pembatasan perintah Apa pun
Variabel yang dapat diatur Apa pun
Versi agen 2.115.0 atau lebih tinggi
Kategori tugas Utilitas

Lihat juga