PowerShell@2 - Attività powerShell v2
Usare questa attività per eseguire uno script di PowerShell in Linux, macOS o Windows.
Nota
Per impostazione predefinita, PowerShell v2 usa PowerShell Core per gli agenti Linux e Windows PowerShell per gli agenti Windows. Per usare la versione più recente di PowerShell negli agenti Windows, impostare il pwsh
parametro su true
. PowerShell Core verrà quindi usato.
Sintassi
# 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.
Input
targetType
- Digitare
string
. Valori consentiti: filePath
(Percorso file), inline
. Valore predefinito: filePath
.
Specifica il tipo di script da eseguire per l'attività: uno script inline o un percorso di un .ps1
file.
filePath
- Percorso script
string
. Obbligatorio quando targetType = filePath
.
Specifica il percorso dello script da eseguire. Deve essere un percorso completo o relativo a $(System.DefaultWorkingDirectory)
.
arguments
- Argomenti
string
. facoltativo. Usare quando targetType = filePath
.
Specifica gli argomenti passati allo script di PowerShell. Gli argomenti possono essere parametri ordinali o parametri denominati. Ad esempio: -Name someName -Path -Value "Some long string value"
.
arguments
non viene usato quando targetType
è impostato su inline
.
script
- Copione
string
. Obbligatorio quando targetType = inline
. Valore predefinito: # Write your PowerShell commands here.\n\nWrite-Host "Hello World"
.
Specifica il contenuto dello script. La lunghezza massima supportata dello script inline è di 2000 caratteri. Usare uno script da un file se si vuole usare uno script più lungo.
script
- Copione
string
. Obbligatorio quando targetType = inline
. Valore predefinito: # 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.
.
Specifica il contenuto dello script. La lunghezza massima supportata dello script inline è di 2000 caratteri. Usare uno script da un file se si vuole usare uno script più lungo.
errorActionPreference
- ErrorActionPreference
string
. Valori consentiti: default
, stop
, silentlyContinue
continue
. Valore predefinito: stop
.
Prependi la riga $ErrorActionPreference = 'VALUE'
nella parte superiore dello script.
errorActionPreference
- ErrorActionPreference
string
. Valori consentiti: stop
, continue
, silentlyContinue
. Valore predefinito: stop
.
Prependi la riga $ErrorActionPreference = 'VALUE'
nella parte superiore dello script.
warningPreference
- AvvisoPreference
string
. Valori consentiti: default
, stop
, silentlyContinue
continue
. Valore predefinito: default
.
Quando non è impostato su Default
, prepende la riga $WarningPreference = 'VALUE'
nella parte superiore dello script.
informationPreference
- InformationPreference
string
. Valori consentiti: default
, stop
, silentlyContinue
continue
. Valore predefinito: default
.
Quando non è impostato su Default
, prepende la riga $InformationPreference = 'VALUE'
nella parte superiore dello script.
verbosePreference
- VerbosePreference
string
. Valori consentiti: default
, stop
, silentlyContinue
continue
. Valore predefinito: default
.
Quando non è impostato su Default
, prepende la riga $VerbosePreference = 'VALUE'
nella parte superiore dello script.
debugPreference
- DebugPreference
string
. Valori consentiti: default
, stop
, silentlyContinue
continue
. Valore predefinito: default
.
Quando non è impostato su Default
, prepende la riga $DebugPreference = 'VALUE'
nella parte superiore dello script.
progressPreference
- ProgressPreference
string
. Valori consentiti: default
, stop
, silentlyContinue
continue
. Valore predefinito: silentlyContinue
.
Quando non è impostato su Default
, prepende la riga $ProgressPreference = 'VALUE'
nella parte superiore dello script.
failOnStderr
- Errore standard non riuscita
boolean
. Valore predefinito: false
.
Se il valore di questo booleano è true
, l'attività ha esito negativo se eventuali errori vengono scritti nella pipeline di errore o se i dati vengono scritti nel flusso di errori standard. In caso contrario, l'attività si basa sul codice di uscita per determinare l'errore.
showWarnings
- Mostra avvisi come avvisi di Azure DevOps
boolean
. Valore predefinito: false
.
Se il valore è impostato su true
e gli avvisi di scrittura dello script, gli avvisi verranno visualizzati come avvisi nei log della pipeline.
ignoreLASTEXITCODE
- Ignorare $LASTEXITCODE
boolean
. Valore predefinito: false
.
Se il valore è impostato su false
, la riga if ((Test-Path -LiteralPath variable:\LASTEXITCODE)) { exit $LASTEXITCODE }
viene aggiunta alla fine dello script. Ciò causerà la propagazione dell'ultimo codice di uscita da un comando esterno come codice di uscita di powershell
. In caso contrario, la riga non viene aggiunta alla fine dello script.
pwsh
- Usare PowerShell Core
boolean
. Valore predefinito: false
.
Se è vero, le attività in esecuzione negli agenti Windows useranno pwsh.exe
dal percorso anziché powershell.exe
.
workingDirectory
- Directory di lavoro
string
.
Specifica la directory di lavoro in cui viene eseguito lo script. Se un valore non è specificato, la directory di lavoro è $(Build.SourcesDirectory)
.
runScriptInSeparateScope
- Eseguire lo script nell'ambito separato
boolean
. Valore predefinito: false
.
Questo input consente di eseguire script di PowerShell usando &
l'operatore anziché l'predefinito .
. Se questo input è impostato su true
, lo script verrà eseguito in un ambito separato e le variabili di PowerShell con ambito globale non verranno aggiornate.
Opzioni di controllo delle attività
Tutte le attività dispongono di opzioni di controllo oltre ai relativi input attività. Per altre informazioni, vedere Opzioni di controllo e proprietà comuni delle attività.
Variabili di output
Nessuno.
Osservazioni
Ogni sessione di PowerShell dura solo per la durata del processo in cui viene eseguita. Le attività che dipendono da ciò che è stato avviato devono trovarsi nello stesso processo del bootstrap.
Collegamenti alle attività
PowerShell@2
include due collegamenti in YAML: steps.powershell e steps.pwsh.
powershell
viene eseguito usando Windows PowerShell (in Windows) opwsh
(Linux e macOS).pwsh
esegue PowerShell Core, l'edizione multipiattaforma di PowerShell basata su .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.
Impostare una variabile in modo che possa essere letto dagli script e dalle attività successive
Per altre informazioni sulla definizione delle variabili di compilazione in uno script, vedere Definire e modificare le variabili di compilazione in uno script.
Per altre informazioni sulla definizione delle variabili di rilascio in uno script, vedere Definire e modificare le variabili di versione in uno script.
Passaggio dei segreti della pipeline nello script, ma il segreto non viene mascherato nei log della pipeline
Tenere presente che PowerShell taglia i messaggi di errore, quindi se si usano segreti della pipeline in uno script, i segreti potrebbero essere eliminati ed esposti. Ad esempio, nello script inline seguente:
./script.ps1 --arg1 value1 --arg2 <some_secret_which_will_be_masked_here>
Potrebbe esserci un'eccezione come: At <path_to_temp_script_file>:4 char:3
+ ./script.ps1 --arg1 value1 --arg2 <unmasked_part_of_original_secret> ...
+ ~~~~~~~~~~
+ <Additional exception details>
Per evitare questo problema, è possibile gestire queste eccezioni a livello di script oppure evitare casi in cui i segreti della pipeline potrebbero essere visualizzati nelle righe di codice sorgente all'interno di messaggi di errore.
Esempio
- Richiamare uno script da un file
- Scrivere un avviso
- Scrivere un errore
- Chiamare lo script di PowerShell con più argomenti
Richiamare uno script da un file
Di seguito è riportato un file di PowerShell di esempio denominato test.ps1
nella radice del repository.
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."
È possibile richiamare questo script nella pipeline in questo modo.
steps:
- task: PowerShell@2
inputs:
targetType: 'filePath'
filePath: 'test.ps1'
Scrivere un avviso
- 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
Scrivere un errore
- 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
Se si vuole che questo errore non riesca la compilazione, aggiungere exit 1
allo 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
Chiamare lo script di PowerShell con più argomenti
Creare uno script test2.ps1
di PowerShell:
param ($input1, $input2)
Write-Host "$input1 $input2"
Nella pipeline YAML chiamare:
- 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'
Requisiti
Requisito | Descrizione |
---|---|
Tipi di pipeline | YAML, build classica, versione classica |
Esecuzione in | Agente, DeploymentGroup |
Richieste | Nessuno |
Capabilities | Questa attività non soddisfa le richieste per le attività successive nel processo. |
Restrizioni dei comandi | Qualsiasi |
Variabili impostabili | Qualsiasi |
Versione agente | 2.115.0 o versione successiva |
Categoria attività | Utilità |
Vedi anche
- Usare uno script di PowerShell per personalizzare la pipeline - ApplyVersionToAssemblies.ps1
- Altre informazioni sugli script di PowerShell