Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Pomocí této úlohy můžete spustit skript 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 parametr pwsh na true. Místo toho se použije PowerShell Core.
Syntaxe
# 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.
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 souboru .ps1.
cesta ke skriptu filePath -
string. Požadováno při targetType = filePath.
Určuje cestu skriptu, který se má spustit. Musí být plně kvalifikovaná cesta nebo relativní k $(System.DefaultWorkingDirectory).
argumentů
string. Volitelný. Používá se při targetType = filePath.
Určuje argumenty předané skriptu PowerShellu. Argumenty mohou být pořadové parametry nebo pojmenované parametry. Například -Name someName -Path -Value "Some long string value".
arguments se nepoužívá, pokud je targetType nastavena na inline.
skriptů script -
string. Požadováno při 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 2 0000 znaků. Pokud chcete použít delší skript, použijte skript ze souboru.
errorActionPreference
-
ErrorActionPreference
string. Povolené hodnoty: default, stop, continuesilentlyContinue. Výchozí hodnota: stop.
Předzálohuje řádek $ErrorActionPreference = 'VALUE' v horní části skriptu.
errorActionPreference
-
ErrorActionPreference
string. Povolené hodnoty: stop, continue, silentlyContinue. Výchozí hodnota: stop.
Předzálohuje řádek $ErrorActionPreference = 'VALUE' v horní části skriptu.
warningPreference
-
WarningPreference
string. Povolené hodnoty: default, stop, continuesilentlyContinue. Výchozí hodnota: default.
Pokud není nastavená na Default, předzálohuje řádek $WarningPreference = 'VALUE' v horní části skriptu.
informationPreference
-
InformationPreference
string. Povolené hodnoty: default, stop, continuesilentlyContinue. Výchozí hodnota: default.
Pokud není nastavená na Default, předzálohuje řádek $InformationPreference = 'VALUE' v horní části skriptu.
verbosePreference
-
verbosePreference
string. Povolené hodnoty: default, stop, continuesilentlyContinue. Výchozí hodnota: default.
Pokud není nastavená na Default, předzálohuje řádek $VerbosePreference = 'VALUE' v horní části skriptu.
debugPreference
-
debugPreference
string. Povolené hodnoty: default, stop, continuesilentlyContinue. Výchozí hodnota: default.
Pokud není nastavená na Default, předzálohuje řádek $DebugPreference = 'VALUE' v horní části skriptu.
progressPreference
-
ProgressPreference
string. Povolené hodnoty: default, stop, continuesilentlyContinue. Výchozí hodnota: silentlyContinue.
Pokud není nastavená na Default, předzálohuje řádek $ProgressPreference = 'VALUE' v horní části skriptu.
Selhání failOnStderr - na standardním chyb
boolean. Výchozí hodnota: false.
Pokud je hodnota této logické hodnoty true, úloha selže, pokud jsou do kanálu chyby zapsány nějaké chyby nebo pokud jsou do standardního datového proudu chyb zapsána nějaká data. V opačném případě úloha spoléhá na ukončovací kód k určení selhání.
showWarnings
-
Zobrazovat upozornění jako upozornění Azure DevOps
boolean. Výchozí hodnota: false.
Pokud je hodnota nastavená na truea váš skript zapíše upozornění, zobrazí se upozornění jako upozornění v protokolech kanálu.
ignoreLASTEXITCODE
-
ignorovat $LASTEXITCODE
boolean. Výchozí hodnota: false.
Pokud je hodnota nastavená na false, připojí se řádek if ((Test-Path -LiteralPath variable:\LASTEXITCODE)) { exit $LASTEXITCODE } ke konci skriptu. To způsobí, že poslední ukončovací kód z externího příkazu se rozšíří jako ukončovací kód powershell. Jinak 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 systému Windows místo pwsh.exepoužívat powershell.exe z vaší cesty .
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
-
Spustit skript v samostatném oboru
boolean. Výchozí hodnota: false.
Tento vstup umožňuje spouštění skriptů PowerShellu pomocí operátoru & namí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 naleznete v tématu Možnosti ovládacího prvku a běžné vlastnosti úloh.
Výstupní proměnné
Žádné.
Poznámky
Každá relace PowerShellu trvá jenom po dobu trvání úlohy, ve které běží. Ú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.
-
powershellběží pomocí Windows PowerShellu (ve Windows) nebopwsh(Linux a macOS). -
pwshpoužívá 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.
Nastavte proměnnou tak, aby ji mohly číst následující skripty a úlohy.
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 vydané 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ý kód není maskovaný v protokolech kanálu
Mějte na paměti, že PowerShell přeruší chybové zprávy, takže pokud ve skriptu používáte tajné kódy kanálu, můžou se tajné kódy oříznout a vystavit. Například ve vložené skriptu níže:
./script.ps1 --arg1 value1 --arg2 <some_secret_which_will_be_masked_here>
Může se jednat o výjimku, například: 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 se tajné kódy kanálu můžou zobrazovat v řádcích zdrojového kódu v rámci chybových zpráv.
Příklady
- vyvolání skriptu ze souboru
- Napsat upozornění
- napsat chybu
- 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 ú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 vyvolat v kanálu takto.
steps:
- task: PowerShell@2
inputs:
targetType: 'filePath'
filePath: 'test.ps1'
Napsání 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, přidejte do skriptu exit 1.
- 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 volejte:
- 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, klasické sestavení, klasická verze |
| Běží na | Agent, DeploymentGroup |
| požadavky | Žádný |
| možnosti | Tento úkol nesplňuje žádné požadavky na následné úkoly v úloze. |
| omezení příkazů | Jakýkoliv |
| nastavitelné proměnné | Jakýkoliv |
| Verze agenta | 2.115.0 nebo vyšší |
| Kategorie úkolu | Užitnost |