Sdílet prostřednictvím


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 truehodnota 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 truea 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.exez .


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.

  • powershellběží pomocí Windows PowerShell (ve Windows) nebo pwsh (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

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é