PowerShell@2 — zadanie programu PowerShell w wersji 2
To zadanie służy do uruchamiania skryptu programu PowerShell w systemie Linux, macOS lub Windows.
Uwaga
Domyślnie program PowerShell w wersji 2 używa programu PowerShell Core dla agentów systemu Linux i Windows PowerShell dla agentów systemu Windows. Aby użyć najnowszej wersji programu PowerShell w agentach systemu Windows, ustaw pwsh
parametr na true
wartość . Zamiast tego zostanie użyty program PowerShell Core.
Składnia
# 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.
Dane wejściowe
targetType
- Typu
string
. Dozwolone wartości: filePath
(ścieżka pliku), inline
. Wartość domyślna: filePath
.
Określa typ skryptu do uruchomienia zadania: skrypt wbudowany lub ścieżkę .ps1
do pliku.
filePath
- Ścieżka skryptu
string
. Wymagane, gdy targetType = filePath
.
Określa ścieżkę skryptu do wykonania. Musi być w pełni kwalifikowaną ścieżką lub względną wartością $(System.DefaultWorkingDirectory)
.
arguments
- Argumenty
string
. Opcjonalny. Użyj polecenia , gdy targetType = filePath
.
Określa argumenty przekazywane do skryptu programu PowerShell. Argumenty mogą być parametrami porządkowymi lub nazwami parametrów. Na przykład -Name someName -Path -Value "Some long string value"
.
arguments
nie jest używany, gdy targetType
jest ustawiona wartość inline
.
script
- Skrypt
string
. Wymagane, gdy targetType = inline
. Wartość domyślna: # Write your PowerShell commands here.\n\nWrite-Host "Hello World"
.
Określa zawartość skryptu. Maksymalna obsługiwana długość skryptu wbudowanego to 20000 znaków. Użyj skryptu z pliku, jeśli chcesz użyć dłuższego skryptu.
script
- Skrypt
string
. Wymagane, gdy targetType = inline
. Wartość domyślna: # 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.
.
Określa zawartość skryptu. Maksymalna obsługiwana długość skryptu wbudowanego to 20000 znaków. Użyj skryptu z pliku, jeśli chcesz użyć dłuższego skryptu.
errorActionPreference
- ErrorActionPreference
string
. Dozwolone wartości: default
, stop
, continue
, silentlyContinue
. Wartość domyślna: stop
.
Poprzedza wiersz $ErrorActionPreference = 'VALUE'
w górnej części skryptu.
errorActionPreference
- ErrorActionPreference
string
. Dozwolone wartości: stop
, continue
, silentlyContinue
. Wartość domyślna: stop
.
Poprzedza wiersz $ErrorActionPreference = 'VALUE'
w górnej części skryptu.
warningPreference
- OstrzeżeniePreference
string
. Dozwolone wartości: default
, stop
, continue
, silentlyContinue
. Wartość domyślna: default
.
Jeśli parametr nie jest ustawiony na Default
, poprzedza wiersz $WarningPreference = 'VALUE'
w górnej części skryptu.
informationPreference
- InformationPreference
string
. Dozwolone wartości: default
, stop
, continue
, silentlyContinue
. Wartość domyślna: default
.
Jeśli parametr nie jest ustawiony na Default
, poprzedza wiersz $InformationPreference = 'VALUE'
w górnej części skryptu.
verbosePreference
- VerbosePreference
string
. Dozwolone wartości: default
, stop
, continue
, silentlyContinue
. Wartość domyślna: default
.
Jeśli parametr nie jest ustawiony na Default
, poprzedza wiersz $VerbosePreference = 'VALUE'
w górnej części skryptu.
debugPreference
- DebugPreference
string
. Dozwolone wartości: default
, stop
, continue
, silentlyContinue
. Wartość domyślna: default
.
Jeśli parametr nie jest ustawiony na Default
, poprzedza wiersz $DebugPreference = 'VALUE'
w górnej części skryptu.
progressPreference
- ProgressPreference
string
. Dozwolone wartości: default
, stop
, continue
, silentlyContinue
. Wartość domyślna: silentlyContinue
.
Jeśli parametr nie jest ustawiony na Default
, poprzedza wiersz $ProgressPreference = 'VALUE'
w górnej części skryptu.
failOnStderr
- Błąd standardowy kończy się niepowodzeniem
boolean
. Wartość domyślna: false
.
Jeśli wartość tej wartości logicznej to true
, zadanie kończy się niepowodzeniem, jeśli jakiekolwiek błędy są zapisywane w potoku błędów lub jeśli jakiekolwiek dane są zapisywane w strumieniu błędu standardowego. W przeciwnym razie zadanie opiera się na kodzie zakończenia w celu określenia błędu.
showWarnings
- Pokazywanie ostrzeżeń jako ostrzeżeń usługi Azure DevOps
boolean
. Wartość domyślna: false
.
Jeśli wartość jest ustawiona na true
, a skrypt zapisuje ostrzeżenia, ostrzeżenia będą wyświetlane jako ostrzeżenia w dziennikach potoku.
ignoreLASTEXITCODE
- Ignoruj $LASTEXITCODE
boolean
. Wartość domyślna: false
.
Jeśli wartość jest ustawiona na false
, wiersz if ((Test-Path -LiteralPath variable:\LASTEXITCODE)) { exit $LASTEXITCODE }
jest dołączany na końcu skryptu. Spowoduje to propagację ostatniego kodu zakończenia z zewnętrznego polecenia jako kodu zakończenia polecenia powershell
. W przeciwnym razie wiersz nie jest dołączany na końcu skryptu.
pwsh
- Korzystanie z programu PowerShell Core
boolean
. Wartość domyślna: false
.
Jeśli jest to prawda, zadania uruchomione na agentach systemu Windows będą używane pwsh.exe
ze ścieżki powershell.exe
zamiast .
workingDirectory
- Katalog roboczy
string
.
Określa katalog roboczy, w którym jest uruchamiany skrypt. Jeśli wartość nie zostanie określona, katalog roboczy to $(Build.SourcesDirectory)
.
runScriptInSeparateScope
- Uruchamianie skryptu w osobnym zakresie
boolean
. Wartość domyślna: false
.
Te dane wejściowe umożliwiają wykonywanie skryptów programu PowerShell przy użyciu &
operatora zamiast domyślnego .
. Jeśli te dane wejściowe mają wartość true
, skrypt zostanie wykonany w osobnym zakresie, a zmienne programu PowerShell o globalnym zakresie nie zostaną zaktualizowane.
Opcje sterowania zadania
Wszystkie zadania mają opcje sterowania oprócz danych wejściowych zadań. Aby uzyskać więcej informacji, zobacz Opcje sterowania i typowe właściwości zadań.
Zmienne wyjściowe
Brak.
Uwagi
Każda sesja programu PowerShell trwa tylko przez czas trwania zadania, w którym jest uruchamiane. Zadania zależne od tego, co zostało bootstrapped, muszą znajdować się w tym samym zadaniu co bootstrap.
Skróty zadań
PowerShell@2
Ma dwa skróty w języku YAML: steps.powershell i steps.pwsh.
powershell
działa przy użyciu Windows PowerShell (w systemie Windows) lubpwsh
(Linux i macOS).pwsh
uruchamia program PowerShell Core, międzyplatformową wersję programu PowerShell utworzoną na platformie .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.
Ustaw zmienną, aby mogła być odczytywana przez kolejne skrypty i zadania
Aby dowiedzieć się więcej na temat definiowania zmiennych kompilacji w skryfcie, zobacz Definiowanie i modyfikowanie zmiennych kompilacji w skryfcie.
Aby dowiedzieć się więcej na temat definiowania zmiennych wydania w skry skryptie, zobacz Definiowanie i modyfikowanie zmiennych wydania w skryfcie.
Przekazywanie wpisów tajnych potoku w skrypsie, ale wpis tajny nie jest maskowany w dziennikach potoku
Należy pamiętać, że program PowerShell odcina komunikaty o błędach, więc jeśli używasz wpisów tajnych potoku w skrypsie, wpisy tajne mogą zostać przycięte i ujawnione. Na przykład w poniższym skryscie wbudowanym:
./script.ps1 --arg1 value1 --arg2 <some_secret_which_will_be_masked_here>
Może istnieć wyjątek, taki jak: : At <path_to_temp_script_file>:4 char:3
+ ./script.ps1 --arg1 value1 --arg2 <unmasked_part_of_original_secret> ...
+ ~~~~~~~~~~
+ <Additional exception details>
Aby uniknąć tego problemu, można obsłużyć te wyjątki na poziomie skryptu lub uniknąć przypadków, gdy wpisy tajne potoku mogą pojawiać się w wierszach kodu źródłowego w komunikatach o błędach.
Przykłady
- Wywoływanie skryptu z pliku
- Pisanie ostrzeżenia
- Pisanie błędu
- Wywoływanie skryptu programu PowerShell z wieloma argumentami
Wywoływanie skryptu z pliku
Poniżej znajduje się przykładowy plik programu PowerShell o nazwie test.ps1
znajdujący się w katalogu głównym repozytorium.
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."
Ten skrypt można wywołać w potoku w następujący sposób.
steps:
- task: PowerShell@2
inputs:
targetType: 'filePath'
filePath: 'test.ps1'
Pisanie ostrzeżenia
- 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
Pisanie błędu
- 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
Jeśli ten błąd ma zakończyć się niepowodzeniem kompilacji, dodaj exit 1
go do skryptu.
- 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
Wywoływanie skryptu programu PowerShell z wieloma argumentami
Tworzenie skryptu test2.ps1
programu PowerShell:
param ($input1, $input2)
Write-Host "$input1 $input2"
W potoku YAML wywołaj:
- 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'
Wymagania
Wymaganie | Opis |
---|---|
Typy potoków | YAML, klasyczna kompilacja, wersja klasyczna |
Działa w | Agent, DeploymentGroup |
Wymagania | Brak |
Możliwości | To zadanie nie spełnia żadnych wymagań dotyczących kolejnych zadań w zadaniu. |
Ograniczenia poleceń | Dowolne |
Zmienne ustawialne | Dowolne |
Wersja agenta | 2.115.0 lub nowsza |
Kategoria zadania | Narzędzie |
Zobacz też
- Dostosowywanie potoku za pomocą skryptu programu PowerShell — ApplyVersionToAssemblies.ps1
- Dowiedz się więcej o skryptach programu PowerShell