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 truewartość . 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.exezamiast .


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.

  • powershelldziała przy użyciu Windows PowerShell (w systemie Windows) lub pwsh (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

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.ps1programu 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ż