PowerShell@2 – úloha PowerShellu v2
Tuto úlohu použijte ke spuštění skriptu PowerShellu v Linuxu, macOS nebo Windows.
Poznámka
PowerShell v2 ve výchozím nastavení používá PowerShell Core pro agenty Linuxu a Windows PowerShell pro agenty Windows. Pokud chcete používat nejnovější verzi PowerShellu v agentech Windows, nastavte pwsh
parametr na true
. Místo toho se použije PowerShell Core.
Syntax
# 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.
Vstupy
targetType
- Typ
string
. Povolené hodnoty: filePath
(Cesta k souboru), inline
. Výchozí hodnota: filePath
.
Určuje typ skriptu, který má úloha spustit: vložený skript nebo cestu k .ps1
souboru.
filePath
- Cesta ke skriptu
string
. Vyžaduje se, když targetType = filePath
.
Určuje cestu skriptu, který se má spustit. Musí se jednat o plně kvalifikovanou cestu nebo relativní k $(System.DefaultWorkingDirectory)
.
arguments
- Argumenty
string
. Nepovinný parametr. Použijte, když targetType = filePath
.
Určuje argumenty předané skriptu PowerShellu. Argumenty můžou být řadové parametry nebo pojmenované parametry. Například, -Name someName -Path -Value "Some long string value"
.
arguments
se nepoužívá, pokud targetType
je nastavená hodnota inline
.
script
- Skript
string
. Vyžaduje se, když targetType = inline
. Výchozí hodnota: # Write your PowerShell commands here.\n\nWrite-Host "Hello World"
.
Určuje obsah skriptu. Maximální podporovaná délka vloženého skriptu je 20000 znaků. Pokud chcete použít delší skript, použijte skript ze souboru.
script
- Skript
string
. Vyžaduje se, když targetType = inline
. Výchozí hodnota: # 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.
.
Určuje obsah skriptu. Maximální podporovaná délka vloženého skriptu je 20000 znaků. Pokud chcete použít delší skript, použijte skript ze souboru.
errorActionPreference
- ErrorActionPreference
string
. Povolené hodnoty: default
, stop
, continue
, silentlyContinue
. Výchozí hodnota: stop
.
Předehodí řádek $ErrorActionPreference = 'VALUE'
v horní části skriptu.
errorActionPreference
- ErrorActionPreference
string
. Povolené hodnoty: stop
, continue
, silentlyContinue
. Výchozí hodnota: stop
.
Předehodí řádek $ErrorActionPreference = 'VALUE'
v horní části skriptu.
warningPreference
- WarningPreference
string
. Povolené hodnoty: default
, stop
, continue
, silentlyContinue
. Výchozí hodnota: default
.
Pokud není nastavená hodnota Default
, předestaví řádek $WarningPreference = 'VALUE'
v horní části skriptu.
informationPreference
- InformationPreference
string
. Povolené hodnoty: default
, stop
, continue
, silentlyContinue
. Výchozí hodnota: default
.
Pokud není nastavená hodnota Default
, předestaví řádek $InformationPreference = 'VALUE'
v horní části skriptu.
verbosePreference
- VerbosePreference
string
. Povolené hodnoty: default
, stop
, continue
, silentlyContinue
. Výchozí hodnota: default
.
Pokud není nastavená hodnota Default
, předestaví řádek $VerbosePreference = 'VALUE'
v horní části skriptu.
debugPreference
- DebugPreference
string
. Povolené hodnoty: default
, stop
, continue
, silentlyContinue
. Výchozí hodnota: default
.
Pokud není nastavená hodnota Default
, předestaví řádek $DebugPreference = 'VALUE'
v horní části skriptu.
progressPreference
- ProgressPreference
string
. Povolené hodnoty: default
, stop
, continue
, silentlyContinue
. Výchozí hodnota: silentlyContinue
.
Pokud není nastavená hodnota Default
, předestaví řádek $ProgressPreference = 'VALUE'
v horní části skriptu.
failOnStderr
- Selhání při standardní chybě
boolean
. Výchozí hodnota: false
.
Pokud je true
hodnota této logické hodnoty , úloha selže, pokud jsou do kanálu chyb zapsány nějaké chyby nebo pokud jsou do streamu standardní chyby zapsána nějaká data. V opačném případě se úloha při určování selhání spoléhá na ukončovací kód.
showWarnings
- Zobrazit upozornění jako upozornění Azure DevOps
boolean
. Výchozí hodnota: false
.
Pokud je hodnota nastavená na true
a váš skript zapisuje upozornění, zobrazí se upozornění v protokolech kanálů jako upozornění.
ignoreLASTEXITCODE
- Ignorovat $LASTEXITCODE
boolean
. Výchozí hodnota: false
.
Pokud je hodnota nastavená na false
, řádek if ((Test-Path -LiteralPath variable:\LASTEXITCODE)) { exit $LASTEXITCODE }
se připojí na konec skriptu. To způsobí, že poslední ukončovací kód z externího příkazu se rozšíří jako ukončovací kód nástroje powershell
. V opačném případě se řádek nepřidá na konec skriptu.
pwsh
- Použití PowerShellu Core
boolean
. Výchozí hodnota: false
.
Pokud je to pravda, budou úlohy spuštěné na agentech windows používat pwsh.exe
z vaší cesty místo powershell.exe
z .
workingDirectory
- Pracovní adresář
string
.
Určuje pracovní adresář, ve kterém se skript spouští. Pokud není zadána hodnota, pracovní adresář je $(Build.SourcesDirectory)
.
runScriptInSeparateScope
- Spuštění skriptu v samostatném oboru
boolean
. Výchozí hodnota: false
.
Tento vstup umožňuje spouštění skriptů PowerShellu pomocí &
operátoru místo výchozího .
. Pokud je tento vstup nastavený na true
, skript se spustí v samostatném oboru a globálně vymezené proměnné PowerShellu se neaktualizují.
Možnosti ovládání úloh
Všechny úlohy mají kromě vstupů také možnosti ovládání. Další informace najdete v tématu Možnosti ovládacího prvku a běžné vlastnosti úlohy.
Výstupní proměnné
Žádné
Poznámky
Každá relace PowerShellu trvá jenom po dobu trvání úlohy, ve které se spouští. Úlohy, které závisí na tom, co bylo spuštěno, musí být ve stejné úloze jako bootstrap.
Klávesové zkratky úkolů
PowerShell@2
má v YAML dvě klávesové zkratky: steps.powershell a steps.pwsh.
powershell
běží pomocí Windows PowerShell (ve Windows) nebopwsh
(Linux a macOS).pwsh
spustí PowerShell Core, multiplatformní edici PowerShellu postavenou na .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.
Nastavení proměnné tak, aby ji bylo možné přečíst pomocí následných skriptů a úkolů
Další informace o definování proměnných sestavení ve skriptu najdete v tématu Definování a úprava proměnných sestavení ve skriptu.
Další informace o definování proměnných verze ve skriptu najdete v tématu Definování a úprava proměnných vydané verze ve skriptu.
Předávání tajných kódů kanálu ve skriptu, ale tajný klíč není maskovaný v protokolech kanálu
Mějte na paměti, že PowerShell přerušuje chybové zprávy, takže pokud ve skriptu použijete tajné kódy kanálu, můžete je oříznout a vystavit. Například ve vloženého skriptu níže:
./script.ps1 --arg1 value1 --arg2 <some_secret_which_will_be_masked_here>
Může dojít k výjimce, jako je: At <path_to_temp_script_file>:4 char:3
+ ./script.ps1 --arg1 value1 --arg2 <unmasked_part_of_original_secret> ...
+ ~~~~~~~~~~
+ <Additional exception details>
Abyste se tomuto problému vyhnuli, můžete tyto výjimky zpracovat na úrovni skriptu nebo se vyhnout případům, kdy by se tajné kódy kanálu mohly objevit na řádcích zdrojového kódu v rámci chybových zpráv.
Příklady
- Vyvolání skriptu ze souboru
- Zápis upozornění
- Zápis chyby
- Volání skriptu PowerShellu s více argumenty
Vyvolání skriptu ze souboru
Následuje ukázkový soubor PowerShellu s názvem test.ps1
umístěný v kořenovém adresáři vašeho úložiště.
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."
Tento skript můžete v kanálu vyvolat takto.
steps:
- task: PowerShell@2
inputs:
targetType: 'filePath'
filePath: 'test.ps1'
Zápis upozornění
- 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
Zápis chyby
- 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
Pokud chcete, aby tato chyba selhala v sestavení, přidejte exit 1
do skriptu.
- 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
Volání skriptu PowerShellu s více argumenty
Vytvoření skriptu PowerShellu test2.ps1
:
param ($input1, $input2)
Write-Host "$input1 $input2"
V kanálu YAML zavolejte:
- 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'
Požadavky
Požadavek | Popis |
---|---|
Typy kanálů | YAML, classic build, verze Classic |
Spustí se | Agent, DeploymentGroup |
Požadavky | Žádné |
Možnosti | Tento úkol nesplňuje žádné požadavky na následné úkoly v úloze. |
Omezení příkazů | Všechny |
Nastavitelné proměnné | Všechny |
Verze agenta | 2.115.0 nebo vyšší |
Kategorie úloh | Nástroj |
Viz také
- Přizpůsobení kanálu pomocí skriptu PowerShellu – ApplyVersionToAssemblies.ps1
- Další informace o skriptech PowerShellu