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 pwsh
true
. 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.
powershell
berjalan menggunakan Windows PowerShell (di Windows) ataupwsh
(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
- Menulis peringatan
- Menulis kesalahan
- Memanggil skrip PowerShell dengan beberapa argumen
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.ps1
PowerShell :
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
- Menggunakan skrip PowerShell untuk menyesuaikan alur Anda - ApplyVersionToAssemblies.ps1
- Pelajari selengkapnya tentang skrip PowerShell