PowerShell@2 - PowerShell v2-taak

Gebruik deze taak om een PowerShell-script uit te voeren in Linux, macOS of Windows.

Notitie

PowerShell v2 maakt standaard gebruik van PowerShell Core voor Linux-agents en Windows PowerShell voor Windows-agents. Als u de nieuwste versie van PowerShell op Windows-agents wilt gebruiken, stelt u de pwsh parameter in op true. In plaats daarvan wordt PowerShell Core gebruikt.

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.

Invoerwaarden

targetType - Type
string. Toegestane waarden: filePath (Bestandspad), inline. Standaardwaarde: filePath.

Hiermee geeft u het type script op voor de taak die moet worden uitgevoerd: een inlinescript of een pad naar een .ps1 bestand.


filePath - Scriptpad
string. Vereist wanneer targetType = filePath.

Hiermee geeft u het pad op van het script dat moet worden uitgevoerd. Moet een volledig gekwalificeerd pad zijn of ten opzichte van $(System.DefaultWorkingDirectory).


arguments - Argumenten
string. Optioneel. Gebruik wanneer targetType = filePath.

Hiermee geeft u de argumenten doorgegeven aan het PowerShell-script. Argumenten kunnen ordinale parameters of benoemde parameters zijn. Bijvoorbeeld -Name someName -Path -Value "Some long string value".

arguments wordt niet gebruikt wanneer targetType is ingesteld op inline.


script - Script
string. Vereist wanneer targetType = inline. Standaardwaarde: # Write your PowerShell commands here.\n\nWrite-Host "Hello World".

Hiermee geeft u de inhoud van het script. De maximaal ondersteunde inlinescriptlengte is 20000 tekens. Gebruik een script uit een bestand als u een langer script wilt gebruiken.


script - Script
string. Vereist wanneer targetType = inline. Standaardwaarde: # 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..

Hiermee geeft u de inhoud van het script. De maximaal ondersteunde inlinescriptlengte is 20000 tekens. Gebruik een script uit een bestand als u een langer script wilt gebruiken.


errorActionPreference - ErrorActionPreference
string. Toegestane waarden: default, stop, continue, silentlyContinue. Standaardwaarde: stop.

Hiermee wordt de regel $ErrorActionPreference = 'VALUE' boven aan het script voorafgegaan.


errorActionPreference - ErrorActionPreference
string. Toegestane waarden: stop, continue, silentlyContinue. Standaardwaarde: stop.

Hiermee wordt de regel $ErrorActionPreference = 'VALUE' boven aan het script voorafgegaan.


warningPreference - Waarschuwingsvoorkeur
string. Toegestane waarden: default, stop, continue, silentlyContinue. Standaardwaarde: default.

Als dit niet is ingesteld op Default, wordt de regel $WarningPreference = 'VALUE' boven aan het script voorafgegaan.


informationPreference - InformationPreference
string. Toegestane waarden: default, stop, continue, silentlyContinue. Standaardwaarde: default.

Als dit niet is ingesteld op Default, wordt de regel $InformationPreference = 'VALUE' boven aan het script voorafgegaan.


verbosePreference - Uitgebreidepreference
string. Toegestane waarden: default, stop, continue, silentlyContinue. Standaardwaarde: default.

Als dit niet is ingesteld op Default, wordt de regel $VerbosePreference = 'VALUE' boven aan het script voorafgegaan.


debugPreference - DebugPreference
string. Toegestane waarden: default, stop, continue, silentlyContinue. Standaardwaarde: default.

Als dit niet is ingesteld op Default, wordt de regel $DebugPreference = 'VALUE' boven aan het script voorafgegaan.


progressPreference - ProgressPreference
string. Toegestane waarden: default, stop, continue, silentlyContinue. Standaardwaarde: silentlyContinue.

Als dit niet is ingesteld op Default, wordt de regel $ProgressPreference = 'VALUE' boven aan het script voorafgegaan.


failOnStderr - Fout bij standaardfout
boolean. Standaardwaarde: false.

Als de waarde van deze booleaanse waarde is, mislukt truede taak als er fouten naar de foutpijplijn worden geschreven of als er gegevens naar de stroom Standaardfouten worden geschreven. Anders is de taak afhankelijk van de afsluitcode om de fout te bepalen.


showWarnings - Waarschuwingen weergeven als Azure DevOps-waarschuwingen
boolean. Standaardwaarde: false.

Als de waarde is ingesteld op trueen uw script waarschuwingen schrijft, worden de waarschuwingen weergegeven als waarschuwingen in pijplijnlogboeken.


ignoreLASTEXITCODE - $LASTEXITCODE negeren
boolean. Standaardwaarde: false.

Als de waarde is ingesteld op false, wordt de regel if ((Test-Path -LiteralPath variable:\LASTEXITCODE)) { exit $LASTEXITCODE } toegevoegd aan het einde van het script. Hierdoor wordt de laatste afsluitcode van een externe opdracht doorgegeven als de afsluitcode van powershell. Anders wordt de regel niet toegevoegd aan het einde van het script.


pwsh - PowerShell Core gebruiken
boolean. Standaardwaarde: false.

Als dit waar is, gebruiken pwsh.exe taken die worden uitgevoerd op Windows-agents vanuit uw pad in plaats van powershell.exe.


workingDirectory - Werkmap
string.

Hiermee geeft u de werkmap op waar het script wordt uitgevoerd. Als er geen waarde is opgegeven, is $(Build.SourcesDirectory)de werkmap .


runScriptInSeparateScope - Script uitvoeren in het afzonderlijke bereik
boolean. Standaardwaarde: false.

Met deze invoer kunnen PowerShell-scripts worden uitgevoerd met behulp van & een operator in plaats van de standaardwaarde .. Als deze invoer is ingesteld op true, wordt het script uitgevoerd in een afzonderlijk bereik en worden PowerShell-variabelen met een globaal bereik niet bijgewerkt.


Opties voor taakbeheer

Alle taken hebben besturingsopties naast hun taakinvoer. Zie Opties voor besturingselementen en algemene taakeigenschappen voor meer informatie.

Uitvoervariabelen

Geen.

Opmerkingen

Elke PowerShell-sessie duurt alleen voor de duur van de taak waarin deze wordt uitgevoerd. Taken die afhankelijk zijn van wat is gebootstrapped, moeten zich in dezelfde taak bevinden als de bootstrap.

Taaksnelkoppelingen

PowerShell@2 heeft twee snelkoppelingen in YAML: steps.powershell en steps.pwsh.

  • powershellwordt uitgevoerd met behulp van Windows PowerShell (op Windows) of pwsh (Linux en macOS).
  • pwsh voert PowerShell Core uit, de platformoverschrijdende editie van PowerShell die is gebouwd op .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.

Een variabele instellen zodat deze kan worden gelezen door volgende scripts en taken

Zie Uw buildvariabelen in een script definiëren en wijzigen voor meer informatie over het definiëren van buildvariabelen in een script.

Zie Uw releasevariabelen in een script definiëren en wijzigen voor meer informatie over het definiëren van releasevariabelen in een script.

Pijplijngeheimen doorgeven in script, maar geheim wordt niet gemaskeerd in pijplijnlogboeken

Houd er rekening mee dat PowerShell foutberichten afbreekt, dus als u pijplijngeheimen in een script gebruikt, kunnen de geheimen worden ingekort en weergegeven. Bijvoorbeeld in het onderstaande inlinescript:

./script.ps1 --arg1 value1 --arg2 <some_secret_which_will_be_masked_here>

Er kan een uitzondering zijn zoals: At <path_to_temp_script_file>:4 char:3:

+   ./script.ps1 --arg1 value1 --arg2 <unmasked_part_of_original_secret> ...
+   ~~~~~~~~~~
    + <Additional exception details>

Om dit probleem te voorkomen, kunt u deze uitzonderingen op scriptniveau afhandelen of voorkomen dat pijplijngeheimen in broncoderegels in foutberichten worden weergegeven.

Voorbeelden

Een script aanroepen vanuit een bestand

Hier volgt een voorbeeld van een PowerShell-bestand met de naam test.ps1 dat zich in de hoofdmap van uw opslagplaats bevindt.

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."

U kunt dit script als volgt in uw pijplijn aanroepen.

steps:
- task: PowerShell@2
  inputs:
    targetType: 'filePath'
    filePath: 'test.ps1'

Een waarschuwing schrijven

- 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

Een fout schrijven

- 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

Als u wilt dat deze fout de build mislukt, voegt u toe exit 1 aan het script.

- 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

PowerShell-script aanroepen met meerdere argumenten

PowerShell-script maken test2.ps1:

param ($input1, $input2)
Write-Host "$input1 $input2"

Roep in uw YAML-pijplijn het volgende aan:

- 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'

Vereisten

Vereiste Beschrijving
Pijplijntypen YAML, klassieke build, klassieke release
Wordt uitgevoerd op Agent, DeploymentGroup
Eisen Geen
Functies Deze taak voldoet niet aan eventuele vereisten voor volgende taken in de taak.
Opdrachtbeperkingen Alle
Instelbare variabelen Alle
Agentversie 2.115.0 of hoger
Taakcategorie Hulpprogramma

Zie ook