PowerShell@2 – PowerShell v2-uppgift
Använd den här uppgiften för att köra ett PowerShell-skript på Linux, macOS eller Windows.
Anmärkning
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.
Ingångar
targetType
-
typ
string
. Tillåtna värden: filePath
(filsökväg), inline
. Standardvärde: filePath
.
Anger typ av skript för uppgiften 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 argumenten 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
-
Script
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 på 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 på Default
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 på Default
förbereder du raden $InformationPreference = 'VALUE'
överst i skriptet.
verbosePreference
-
VerbosePreference
string
. Tillåtna värden: default
, stop
, continue
, silentlyContinue
. Standardvärde: default
.
När den inte är inställd på Default
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 på Default
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 på Default
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 true
misslyckas 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 när Azure DevOps-varningar
boolean
. Standardvärde: false
.
Om värdet är inställt på true
och skriptet skriver varningar visas varningarna som varningar i pipelineloggar.
ignoreLASTEXITCODE
-
Ignorera $LASTEXITCODE
boolean
. Standardvärde: false
.
Om värdet är inställt på false
läggs raden if ((Test-Path -LiteralPath variable:\LASTEXITCODE)) { exit $LASTEXITCODE }
till i slutet av skriptet. Detta gör att den sista slutkoden från ett externt kommando sprids som slutkod för powershell
. Annars läggs inte raden till i slutet av skriptet.
pwsh
-
Använda PowerShell Core
boolean
. Standardvärde: false
.
Om detta är sant använder aktiviteter som körs på Windows-agenter pwsh.exe
från sökvägen i stället för powershell.exe
.
workingDirectory
-
Arbetskatalog
string
.
Anger arbetskatalogen där skriptet körs. Om inget värde anges $(Build.SourcesDirectory)
arbetskatalogen .
runScriptInSeparateScope
-
Kör skript i det separata omfånget
boolean
. Standardvärde: false
.
Med den här indatan kan du köra PowerShell-skript med hjälp av &
-operatorn i stället för standard .
. Om den här indatan är inställd på true
kö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
Ingen.
Anmärkningar
Varje PowerShell-session varar endast under hela jobbet där den körs. Uppgifter som är beroende av vad som har bootstrapped måste vara i samma jobb som bootstrap.
Kortkommandon för aktiviteter
PowerShell@2
har två genvägar i YAML: steps.powershell och steps.pwsh.
-
powershell
körs med antingen Windows PowerShell (i Windows) ellerpwsh
(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 kan du till exempel:
./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
- Skriva en varning
- Skriv ett fel
- Anropa PowerShell-skript med flera argument
Anropa ett skript från en fil
Följande är en PowerShell-exempelfil med namnet test.ps1
som finns i roten på lagringsplatsen.
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 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 |
kräver | Ingen |
funktioner | Den här aktiviteten uppfyller inte några krav på efterföljande uppgifter i jobbet. |
Kommandobegränsningar | Vilken som helst |
variabler som kan | Vilken som helst |
Agentversion | 2.115.0 eller senare |
Aktivitetskategori | Nytta |