Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Gebruik deze taak om een PowerShell-script uit te voeren op Linux, macOS of Windows.
Opmerking
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 parameter pwsh
in op true
. PowerShell Core wordt vervolgens gebruikt.
Syntaxis
# 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.
Invoer
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 van het script dat moet worden uitgevoerd. Moet een volledig gekwalificeerd pad of ten opzichte van $(System.DefaultWorkingDirectory)
zijn.
arguments
-
argumenten
string
. Facultatief. Gebruiken wanneer targetType = filePath
.
Hiermee geeft u de argumenten op die worden 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 op. De maximaal ondersteunde inline scriptlengte 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 voorbereid.
errorActionPreference
-
ErrorActionPreference
string
. Toegestane waarden: stop
, continue
, silentlyContinue
. Standaardwaarde: stop
.
Hiermee wordt de regel $ErrorActionPreference = 'VALUE'
boven aan het script voorbereid.
warningPreference
-
WaarschuwingVoorkeur
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
-
InformatieVoorkeur
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
-
Uitgebreide voorkeur
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
-
DebugVoorkeur
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
-
mislukt bij standaardfout
boolean
. Standaardwaarde: false
.
Als de waarde van deze booleaanse waarde is true
, mislukt de taak als er fouten naar de foutpijplijn worden geschreven of als er gegevens naar de standaardfoutstroom 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 true
en 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. Dit zorgt ervoor dat de laatste exit-code van een externe opdracht wordt gepropageerd als de exit-code 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 taken die worden uitgevoerd op Windows-agents pwsh.exe
van uw pad in plaats van powershell.exe
.
workingDirectory
-
werkmap
string
.
Hiermee geeft u de werkmap waarin het script wordt uitgevoerd. Als een waarde niet is opgegeven, is $(Build.SourcesDirectory)
de werkmap .
runScriptInSeparateScope
-
Voer script uit in het afzonderlijke bereik
boolean
. Standaardwaarde: false
.
Met deze invoer kunnen PowerShell-scripts worden uitgevoerd met behulp van &
een operator in plaats van de standaard .
. Als deze invoer is ingesteld op true
, wordt het script uitgevoerd in een afzonderlijk bereik en worden de PowerShell-variabelen met een wereldwijd bereik niet bijgewerkt.
Opties voor taakbeheer
Alle taken hebben besturingsopties naast hun taakinvoer. Zie Opties en algemene taakeigenschappenvoor 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 opgestart, moeten zich in dezelfde taak bevinden als de bootstrap.
Taken snelkoppelingen
PowerShell@2
heeft twee sneltoetsen in YAML: steps.powershell en steps.pwsh.
-
powershell
wordt uitgevoerd met behulp van Windows PowerShell (op Windows) ofpwsh
(Linux en macOS). -
pwsh
voert PowerShell Core uit, de platformonafhankelijke 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.
Stel een variabele in 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 afsnijdt, dus als u pijplijngeheimen in een script gebruikt, kunnen de geheimen worden bijgesneden en weergegeven. Bijvoorbeeld in het onderstaande inline-script:
./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 gevallen vermijden waarin pijplijngeheimen kunnen worden weergegeven in broncoderegels in foutberichten.
Voorbeelden
- Een script aanroepen vanuit een bestand
- Schrijf een waarschuwing
- Schrijf een foutmelding
- Roep PowerShell-script aan met meerdere argumenten
Een script aanroepen vanuit een bestand
Hieronder volgt een voorbeeld van een PowerShell-bestand met de naam in test.ps1
de hoofdmap van uw opslagplaats.
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 op deze manier in uw pijplijn aanroepen.
steps:
- task: PowerShell@2
inputs:
targetType: 'filePath'
filePath: 'test.ps1'
Schrijf een waarschuwing
- 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
Schrijf een foutmelding
- 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 mislukt in de build, voegt u deze 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
Roep PowerShell-script aan met meerdere argumenten
PowerShell-script test2.ps1
maken:
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'
Behoeften
Voorwaarde | Beschrijving |
---|---|
Pijplijntypen | YAML, klassieke build, klassieke release |
Wordt uitgevoerd op | Agent, DeploymentGroup |
Eisen | Geen |
Mogelijkheden | Deze taak voldoet niet aan de vereisten voor volgende taken in de taak. |
opdrachtbeperkingen | Welke dan ook |
variabelen instellen | Welke dan ook |
Agentversie | 2.115.0 of hoger |
Taakcategorie | Nutsvoorzieningen |