Dela via


PowerShell@2 – PowerShell v2-uppgift

Använd den här uppgiften för att köra ett PowerShell-skript på Linux, macOS eller Windows.

Anteckning

Som standard använder PowerShell v2 PowerShell Core för Linux-agenter och Windows PowerShell för Windows-agenter. Om du vill använda den senaste versionen av PowerShell på Windows-agenter anger du parametern pwsh till true. PowerShell Core används sedan i stället.

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.

Indata

targetType - Typ
string. Tillåtna värden: filePath (Filsökväg), inline. Standardvärde: filePath.

Anger typ av skript för aktiviteten som ska köras: ett infogat skript eller en sökväg till en .ps1 fil.


filePath - Skriptsökväg
string. Krävs när targetType = filePath.

Anger sökvägen till skriptet som ska köras. Måste vara en fullständigt kvalificerad sökväg eller i förhållande till $(System.DefaultWorkingDirectory).


arguments - Argument
string. Valfritt. Använd när targetType = filePath.

Anger de argument som skickas till PowerShell-skriptet. Argument kan vara ordningsparametrar eller namngivna parametrar. Till exempel -Name someName -Path -Value "Some long string value".

arguments används inte när targetType är inställt på inline.


script - Skript
string. Krävs när targetType = inline. Standardvärde: # Write your PowerShell commands here.\n\nWrite-Host "Hello World".

Anger innehållet i skriptet. Den maximala längden för infogade skript som stöds är 2 0000 tecken. Använd ett skript från en fil om du vill använda ett längre skript.


script - Skript
string. Krävs när targetType = inline. Standardvärde: # 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..

Anger innehållet i skriptet. Den maximala längden för infogade skript som stöds är 2 0000 tecken. Använd ett skript från en fil om du vill använda ett längre skript.


errorActionPreference - ErrorActionPreference
string. Tillåtna värden: default, stop, continue, silentlyContinue. Standardvärde: stop.

Förbereder raden $ErrorActionPreference = 'VALUE' överst i skriptet.


errorActionPreference - ErrorActionPreference
string. Tillåtna värden: stop, continue, silentlyContinue. Standardvärde: stop.

Förbereder raden $ErrorActionPreference = 'VALUE' överst i skriptet.


warningPreference - WarningPreference
string. Tillåtna värden: default, stop, continue, silentlyContinue. Standardvärde: default.

När den inte är inställd Defaultpå förbereder du raden $WarningPreference = 'VALUE' överst i skriptet.


informationPreference - InformationPreference
string. Tillåtna värden: default, stop, continue, silentlyContinue. Standardvärde: default.

När den inte är inställd Defaultpå förbereder du raden $InformationPreference = 'VALUE' överst i skriptet.


verbosePreference - Utförlig förkastning
string. Tillåtna värden: default, stop, continue, silentlyContinue. Standardvärde: default.

När den inte är inställd Defaultpå förbereder du raden $VerbosePreference = 'VALUE' överst i skriptet.


debugPreference - DebugPreference
string. Tillåtna värden: default, stop, continue, silentlyContinue. Standardvärde: default.

När den inte är inställd Defaultpå förbereder du raden $DebugPreference = 'VALUE' överst i skriptet.


progressPreference - ProgressPreference
string. Tillåtna värden: default, stop, continue, silentlyContinue. Standardvärde: silentlyContinue.

När den inte är inställd Defaultpå förbereder du raden $ProgressPreference = 'VALUE' överst i skriptet.


failOnStderr - Fel vid standardfel
boolean. Standardvärde: false.

Om värdet för det här booleska värdet är truemisslyckas aktiviteten om några fel skrivs till felpipelinen eller om några data skrivs till standardfelströmmen. Annars förlitar sig uppgiften på slutkoden för att fastställa felet.


showWarnings - Visa varningar som Azure DevOps-varningar
boolean. Standardvärde: false.

Om värdet är inställt på trueoch skriptet skriver varningar visas varningarna som varningar i pipelineloggarna.


ignoreLASTEXITCODE - Ignorera $LASTEXITCODE
boolean. Standardvärde: false.

Om värdet är inställt på falseläggs raden if ((Test-Path -LiteralPath variable:\LASTEXITCODE)) { exit $LASTEXITCODE } till i slutet av skriptet. Detta gör att den senaste slutkoden från ett externt kommando sprids som slutkod powershellför . Annars läggs inte raden till i slutet av skriptet.


pwsh - Använda PowerShell Core
boolean. Standardvärde: false.

Om detta är sant används pwsh.exe uppgifter som körs på Windows-agenter från din sökväg i stället för powershell.exe.


workingDirectory - Arbetskatalog
string.

Anger arbetskatalogen där skriptet körs. Om inget värde anges är $(Build.SourcesDirectory)arbetskatalogen .


runScriptInSeparateScope - Köra skriptet i det separata omfånget
boolean. Standardvärde: false.

Med dessa indata kan du köra PowerShell-skript med operatorn & i stället för standardinställningen .. Om dessa indata är inställda på truekörs skriptet i ett separat omfång och globalt begränsade PowerShell-variabler uppdateras inte.


Kontrollalternativ för aktivitet

Alla aktiviteter har kontrollalternativ utöver sina aktivitetsindata. Mer information finns i Kontrollalternativ och vanliga uppgiftsegenskaper.

Utdatavariabler

Inga.

Kommentarer

Varje PowerShell-session varar bara under hela jobbet som den körs i. Uppgifter som är beroende av vad som har bootstrappats måste finnas i samma jobb som bootstrap-metoden.

Genvägar till aktiviteter

PowerShell@2 har två genvägar i YAML: steps.powershell och steps.pwsh.

  • powershellkörs med antingen Windows PowerShell (i Windows) eller pwsh (Linux och macOS).
  • pwsh kör PowerShell Core, den plattformsoberoende versionen av PowerShell som bygger på .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.

Ange en variabel så att den kan läsas av efterföljande skript och uppgifter

Mer information om hur du definierar byggvariabler i ett skript finns i Definiera och ändra dina byggvariabler i ett skript.

Mer information om hur du definierar versionsvariabler i ett skript finns i Definiera och ändra dina versionsvariabler i ett skript.

Skicka pipelinehemligheter i skript, men hemligheten maskeras inte i pipelineloggar

Tänk på att PowerShell stänger av felmeddelanden, så om du använder pipelinehemligheter i ett skript kan hemligheterna trimmas och exponeras. I det infogade skriptet nedan:

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

Det kan finnas ett undantag som: At <path_to_temp_script_file>:4 char:3

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

För att undvika det här problemet kan du hantera dessa undantag på skriptnivå eller undvika fall då pipelinehemligheter kan visas i källkodsrader i felmeddelanden.

Exempel

Anropa ett skript från en fil

Följande är en PowerShell-exempelfil med namnet test.ps1 i databasens rot.

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

Du kan anropa det här skriptet i pipelinen så här.

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

Skriva en varning

- 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

Skriva ett fel

- 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

Om du vill att det här felet ska misslyckas med bygget lägger du till exit 1 i skriptet.

- 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

Anropa PowerShell-skript med flera argument

Skapa PowerShell-skript test2.ps1:

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

I yaml-pipelinen anropar du:

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

Krav

Krav Beskrivning
Pipelinetyper YAML, klassisk version, klassisk version
Körs på Agent, DeploymentGroup
Krav Ingen
Funktioner Den här aktiviteten uppfyller inte några krav för efterföljande uppgifter i jobbet.
Kommandobegränsningar Valfri
Inställningsbara variabler Valfri
Agentversion 2.115.0 eller senare
Uppgiftskategori Verktyg

Se även