Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Użyj tego zadania, aby uruchomić skrypt programu PowerShell w systemie Linux, macOS lub Windows.
Uwaga / Notatka
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 na agentach systemu Windows, ustaw parametr pwsh na true. 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.
Dane wejściowe
targetType
-
typ
string. Dozwolone wartości: filePath (ścieżka pliku), inline. Wartość domyślna: filePath.
Określa typ skryptu dla zadania do uruchomienia: skrypt wbudowany lub ścieżka .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ą $(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 parametrami nazwanymi. Na przykład -Name someName -Path -Value "Some long string value".
arguments nie jest używany, gdy targetType jest ustawiony na inline.
skryptu script -
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.
errorActionPreference
-
ErrorActionPreference (Preferencja błędu)
string. Dozwolone wartości: default, , stopcontinue, silentlyContinue. Wartość domyślna: stop.
Poprzedza wiersz $ErrorActionPreference = 'VALUE' u góry skryptu.
errorActionPreference
-
ErrorActionPreference (Preferencja błędu)
string. Dozwolone wartości: stop, continue, silentlyContinue. Wartość domyślna: stop.
Poprzedza wiersz $ErrorActionPreference = 'VALUE' u góry skryptu.
warningPreference
-
OstrzeżeniePreferencja
string. Dozwolone wartości: default, , stopcontinue, silentlyContinue. Wartość domyślna: default.
Jeśli nie jest ustawiona na Default, dołącza wiersz $WarningPreference = 'VALUE' na początku skryptu.
informationPreference
-
Preferencja informacji
string. Dozwolone wartości: default, , stopcontinue, silentlyContinue. Wartość domyślna: default.
Jeśli nie jest ustawiona na Default, dołącza wiersz $InformationPreference = 'VALUE' na początku skryptu.
verbosePreference
-
VerbosePreference (Preferencja pełnego)
string. Dozwolone wartości: default, , stopcontinue, silentlyContinue. Wartość domyślna: default.
Jeśli nie jest ustawiona na Default, dołącza wiersz $VerbosePreference = 'VALUE' na początku skryptu.
debugPreference
-
DebugPreference
string. Dozwolone wartości: default, , stopcontinue, silentlyContinue. Wartość domyślna: default.
Jeśli nie jest ustawiona na Default, dołącza wiersz $DebugPreference = 'VALUE' na początku skryptu.
progressPreference
-
ProgressPreference (Preferencja postępu)
string. Dozwolone wartości: default, , stopcontinue, silentlyContinue. Wartość domyślna: silentlyContinue.
Jeśli nie jest ustawiona na Default, dołącza wiersz $ProgressPreference = 'VALUE' na początku skryptu.
failOnStderr
-
niepowodzenie w błędu standardowego
boolean. Wartość domyślna: false.
Jeśli wartość tej wartości logicznej to true, zadanie kończy się niepowodzeniem, jeśli jakiekolwiek błędy zostaną zapisane w potoku błędów lub jeśli jakiekolwiek dane zostaną zapisane w strumieniu błędów standardowych. 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, że ostatni kod zakończenia z polecenia zewnętrznego zostanie propagowany jako kod powershellzakończenia . W przeciwnym razie wiersz nie jest dołączany na końcu skryptu.
pwsh
-
używanie programu PowerShell Core
boolean. Wartość domyślna: false.
Jeśli to prawda, zadania uruchomione na agentach systemu Windows będą używać pwsh.exe ze ścieżki zamiast powershell.exe.
katalogu roboczego workingDirectory -
string.
Określa katalog roboczy, w którym jest uruchamiany skrypt. Jeśli wartość nie zostanie określona, katalogiem roboczym będzie $(Build.SourcesDirectory).
runScriptInSeparateScope
-
Uruchamianie skryptu w oddzielnym zakresie
boolean. Wartość domyślna: false.
To wejście umożliwia wykonywanie skryptów programu PowerShell przy użyciu & operatora zamiast domyślnego .. Jeśli te dane wejściowe są ustawione na true, skrypt zostanie wykonany w oddzielnym 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ń podrzędnych. Aby uzyskać więcej informacji, zobacz opcje kontroli i typowe właściwości zadań.
Zmienne wyjściowe
Żaden.
Uwagi
Każda sesja programu PowerShell trwa tylko przez czas trwania zadania, w którym jest uruchamiana. Zadania zależne od bootstrap 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 programu Windows PowerShell (w systemie Windows) lubpwsh(Linux i macOS). -
pwshuruchamia 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 skrypcie, zobacz Definiowanie i modyfikowanie zmiennych kompilacji w skrypcie.
Aby dowiedzieć się więcej na temat definiowania zmiennych wydania w skrypcie, zobacz Definiowanie i modyfikowanie zmiennych wydania w skrypcie.
Przekazywanie wpisów tajnych potoku w skrypcie, 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 skrypcie, wpisy tajne mogą zostać przycięte i uwidocznione. Na przykład w poniższym skrypcie 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, w których wpisy tajne potoku mogą pojawiać się w wierszach kodu źródłowego w komunikatach o błędach.
Przykłady
- Wywoływanie skryptu z pliku
- Napisz ostrzeżenie
- Napisz błąd
- 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."
Możesz wywołać ten skrypt w potoku w następujący sposób.
steps:
- task: PowerShell@2
inputs:
targetType: 'filePath'
filePath: 'test.ps1'
Napisz ostrzeżenie
- 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
Napisz błąd
- 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 chcesz, aby ten błąd zakończył się niepowodzeniem kompilacji, dodaj exit 1 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
Utwórz skrypt test2.ps1PowerShell :
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 na | Agent, DeploymentGroup |
| Wymagania | Żaden |
| Możliwości | To zadanie nie spełnia żadnych wymagań dotyczących kolejnych zadań w zadaniu. |
| ograniczenia poleceń | Jakikolwiek |
| zmienne ustawiane | Jakikolwiek |
| Wersja agenta | 2.115.0 lub nowsza |
| Kategoria zadań | Użyteczność |