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, silentlyContinuecontinue. 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, silentlyContinuecontinue. 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, silentlyContinuecontinue. 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, silentlyContinuecontinue. 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, silentlyContinuecontinue. 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, silentlyContinuecontinue. 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 truee 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.

  • powershellviene eseguito usando Windows PowerShell (in Windows) o pwsh (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

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