PowerShell@2 - Attività di 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 parametro pwsh
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.
Ingressi dati
di tipo targetType
-
string
. Valori consentiti: filePath
(percorso file), inline
. Valore predefinito: filePath
Specifica il tipo di script per l'attività da eseguire: uno script inline o un percorso di un file .ps1
.
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
. Opzionale. 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
-
script
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 20000 caratteri. Usare uno script da un file se si vuole usare uno script più lungo.
errorActionPreference
-
ErrorActionPreference
string
. Valori consentiti: default
, stop
, continue
, silentlyContinue
. Valore predefinito: stop
Antepone la riga $ErrorActionPreference = 'VALUE'
nella parte superiore dello script.
errorActionPreference
-
ErrorActionPreference
string
. Valori consentiti: stop
, continue
, silentlyContinue
. Valore predefinito: stop
Antepone la riga $ErrorActionPreference = 'VALUE'
nella parte superiore dello script.
warningPreference
-
AvvisoPreference
string
. Valori consentiti: default
, stop
, continue
, silentlyContinue
. Valore predefinito: default
Se non è impostato su Default
, antepone la riga $WarningPreference = 'VALUE'
all'inizio dello script.
informationPreference
-
InformationPreference
string
. Valori consentiti: default
, stop
, continue
, silentlyContinue
. Valore predefinito: default
Se non è impostato su Default
, antepone la riga $InformationPreference = 'VALUE'
all'inizio dello script.
verbosePreference
-
VerbosePreference
string
. Valori consentiti: default
, stop
, continue
, silentlyContinue
. Valore predefinito: default
Se non è impostato su Default
, antepone la riga $VerbosePreference = 'VALUE'
all'inizio dello script.
debugPreference
-
DebugPreference
string
. Valori consentiti: default
, stop
, continue
, silentlyContinue
. Valore predefinito: default
Se non è impostato su Default
, antepone la riga $DebugPreference = 'VALUE'
all'inizio dello script.
progressPreference
-
ProgressPreference
string
. Valori consentiti: default
, stop
, continue
, silentlyContinue
. Valore predefinito: silentlyContinue
Se non è impostato su Default
, antepone la riga $ProgressPreference = 'VALUE'
all'inizio dello script.
failOnStderr
-
errore standard
boolean
. Valore predefinito: false
Se il valore di questo valore booleano è true
, l'attività ha esito negativo se vengono scritti errori nella pipeline di errore o se i dati vengono scritti nel flusso di errore 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 lo script scrive avvisi, gli avvisi verranno visualizzati come avvisi nei log della pipeline.
ignoreLASTEXITCODE
-
Ignora $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. In questo modo, l'ultimo codice di uscita da un comando esterno verrà propagato 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 questo è vero, le attività in esecuzione negli agenti Windows useranno pwsh.exe
dal percorso invece di powershell.exe
.
workingDirectory
-
directory di lavoro
string
.
Specifica la directory di lavoro in cui viene eseguito lo script. Se non viene specificato un valore, la directory di lavoro viene $(Build.SourcesDirectory)
.
runScriptInSeparateScope
-
Esegui script nell'ambito separato
boolean
. Valore predefinito: false
Questo input consente l'esecuzione di script di PowerShell usando &
operatore anziché il .
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 letta da script e attività successivi
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 versione in uno script, vedere Definire e modificare le variabili di versione in uno script.
Passaggio di segreti della pipeline nello script, ma il segreto non è mascherato nei log della pipeline
Tenere presente che PowerShell interrompe i messaggi di errore, quindi se si usano segreti della pipeline in uno script, è possibile tagliare ed esporre i segreti. Ad esempio, nello script inline seguente:
./script.ps1 --arg1 value1 --arg2 <some_secret_which_will_be_masked_here>
Potrebbe essere presente 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 o evitare casi in cui i segreti della pipeline possono essere visualizzati nelle righe del codice sorgente all'interno dei messaggi di errore.
Esempi
- 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
che si trova 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 di PowerShell test2.ps1
:
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 |
Viene eseguito in | Agente, DeploymentGroup |
richieste | Nessuno |
funzionalità di | Questa attività non soddisfa alcuna richiesta di attività successive nel processo. |
restrizioni dei comandi | Qualunque |
variabili impostabili | Qualunque |
Versione dell'agente | 2.115.0 o versione successiva |
Categoria attività | Utilità |
Vedere anche
- Usare uno script di PowerShell per personalizzare la pipeline - ApplyVersionToAssemblies.ps1
- Altre informazioni sugli script di PowerShell