PowerShell@2 - PowerShell v2 タスク

このタスクを使用して、Linux、macOS、または Windows で PowerShell スクリプトを実行します。

注意

既定では、PowerShell v2 では Linux エージェントには PowerShell Core が使用され、Windows エージェントには Windows PowerShellが使用されます。 Windows エージェントで最新バージョンの PowerShell を使用するには、 パラメーターを pwshtrue設定します。 その後、代わりに PowerShell Core が使用されます。

構文

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

入力

targetType -
string. 使用できる値: filePath (ファイル パス)、 inline。 既定値: filePath

実行するタスクのスクリプトの種類 (インライン スクリプトまたはファイルへのパス) を .ps1 指定します。


filePath - スクリプト パス
string. targetType = filePath の場合に必要です。

実行するスクリプトのパスを指定します。 完全修飾パスであるか、 に対する相対パスである $(System.DefaultWorkingDirectory)必要があります。


arguments - 引数
string. 省略可能。 の場合は targetType = filePathを使用します。

PowerShell スクリプトに渡される引数を指定します。 引数には、序数パラメーターまたは名前付きパラメーターを指定できます。 たとえば、「 -Name someName -Path -Value "Some long string value" 」のように入力します。

argumentsが にinline設定されている場合targetTypeは 使用されません。


script - スクリプト
string. targetType = inline の場合に必要です。 既定値: # Write your PowerShell commands here.\n\nWrite-Host "Hello World"

スクリプトの内容を指定します。 サポートされているインライン スクリプトの最大長は 2,0000 文字です。 より長いスクリプトを使用する場合は、ファイルのスクリプトを使用します。


script - スクリプト
string. targetType = inline の場合に必要です。 既定値: # 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.

スクリプトの内容を指定します。 サポートされているインライン スクリプトの最大長は 2,0000 文字です。 より長いスクリプトを使用する場合は、ファイルのスクリプトを使用します。


errorActionPreference - ErrorActionPreference
string. 使用できる値: default、、stopcontinuesilentlyContinue。 既定値: stop

スクリプトの先頭に行 $ErrorActionPreference = 'VALUE' を追加します。


errorActionPreference - ErrorActionPreference
string. 許可値: stopcontinuesilentlyContinue。 既定値: stop

スクリプトの先頭に行 $ErrorActionPreference = 'VALUE' を追加します。


warningPreference - WarningPreference
string. 使用できる値: default、、stopcontinuesilentlyContinue。 既定値: default

Default設定されていない場合は、スクリプトの先頭にある行の先頭に行 $WarningPreference = 'VALUE' を追加します。


informationPreference - InformationPreference
string. 使用できる値: default、、stopcontinuesilentlyContinue。 既定値: default

Default設定されていない場合は、スクリプトの先頭にある行の先頭に行 $InformationPreference = 'VALUE' を追加します。


verbosePreference - VerbosePreference
string. 使用できる値: default、、stopcontinuesilentlyContinue。 既定値: default

Default設定されていない場合は、スクリプトの先頭にある行の先頭に行 $VerbosePreference = 'VALUE' を追加します。


debugPreference - DebugPreference
string. 使用できる値: default、、stopcontinuesilentlyContinue。 既定値: default

Default設定されていない場合は、スクリプトの先頭にある行の先頭に行 $DebugPreference = 'VALUE' を追加します。


progressPreference - ProgressPreference
string. 使用できる値: default、、stopcontinuesilentlyContinue。 既定値: silentlyContinue

Default設定されていない場合は、スクリプトの先頭にある行の先頭に行 $ProgressPreference = 'VALUE' を追加します。


failOnStderr - 標準エラーで失敗する
boolean. 既定値: false

このブール値が の場合、 trueエラーがエラー パイプラインに書き込まれた場合、または標準エラー ストリームにデータが書き込まれる場合、タスクは失敗します。 それ以外の場合、タスクは終了コードに依存してエラーを判断します。


showWarnings - Azure DevOps の警告として警告を表示する
boolean. 既定値: false

値が に true設定され、スクリプトが警告を書き込む場合、警告はパイプライン ログに警告として表示されます。


ignoreLASTEXITCODE - $LASTEXITCODEを無視する
boolean. 既定値: false

値が に false設定されている場合、スクリプトの末尾に行 if ((Test-Path -LiteralPath variable:\LASTEXITCODE)) { exit $LASTEXITCODE } が追加されます。 これにより、外部コマンドの最後の終了コードが の powershell終了コードとして伝達されます。 それ以外の場合、行はスクリプトの末尾に追加されません。


pwsh - PowerShell Core を使用する
boolean. 既定値: false

これが true の場合、Windows エージェントで実行されているタスクでは、 ではなくpowershell.exeパスから が使用pwsh.exeされます。


workingDirectory - 作業ディレクトリ
string.

スクリプトが実行される作業ディレクトリを指定します。 値が指定されていない場合、作業ディレクトリは になります $(Build.SourcesDirectory)


runScriptInSeparateScope - 別のスコープでスクリプトを実行する
boolean. 既定値: false

この入力により、既定の ではなく 演算子を使用して & PowerShell スクリプトを実行できます .。 この入力が に true設定されている場合、スクリプトは別のスコープで実行され、グローバル スコープの PowerShell 変数は更新されません。


タスク制御オプション

すべてのタスクには、タスク入力に加えて制御オプションがあります。 詳細については、「 コントロール オプションと一般的なタスク プロパティ」を参照してください。

出力変数

[なし] :

解説

各 PowerShell セッションは、実行されるジョブの期間中のみ継続します。 ブートストラップが行われた内容に依存するタスクは、そのブートストラップと同じジョブ内にある必要があります。

タスクのショートカット

PowerShell@2 には、YAML に steps.powershellsteps.pwsh という 2 つのショートカットがあります。

  • powershellは、Windows PowerShell (Windows) または pwsh (Linux および macOS) を使用して実行されます。
  • pwsh は、.NET Core 上に構築された PowerShell のクロスプラットフォーム エディションである PowerShell 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.

後続のスクリプトやタスクで読み取ることができるように変数を設定する

スクリプトでビルド変数を定義する方法の詳細については、スクリプトでのビルド変数の定義および変更に関するページを参照してください。

スクリプトでのリリース変数の定義の詳細については、「スクリプトで リリース変数を定義および変更する」を参照してください。

スクリプトでパイプライン シークレットを渡すが、シークレットはパイプライン ログでマスクされない

PowerShell ではエラー メッセージが遮断されるため、スクリプトでパイプライン シークレットを使用すると、シークレットがトリミングされて公開される可能性があることに注意してください。 たとえば、次のインライン スクリプトでは、次のようになります。

./script.ps1 --arg1 value1 --arg2 <some_secret_which_will_be_masked_here>

次のような例外が発生する可能性があります。 At <path_to_temp_script_file>:4 char:3

+   ./script.ps1 --arg1 value1 --arg2 <unmasked_part_of_original_secret> ...
+   ~~~~~~~~~~
    + <Additional exception details>

この問題を回避するには、スクリプト レベルでこれらの例外を処理するか、パイプライン シークレットがエラー メッセージ内のソース コード行に表示される場合を回避できます。

ファイルからスクリプトを呼び出す

リポジトリのルートにある という名前 test.ps1 の PowerShell ファイルのサンプルを次に示します。

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

このスクリプトは、次のようにパイプラインで呼び出すことができます。

steps:
- task: PowerShell@2
  inputs:
    targetType: 'filePath'
    filePath: 'test.ps1'

警告を書き込む

- 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

エラーを書き込む

- 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

このエラーでビルドが失敗する場合は、 をスクリプトに追加 exit 1 します。

- 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

複数の引数を使用して PowerShell スクリプトを呼び出す

PowerShell スクリプト test2.ps1を作成します。

param ($input1, $input2)
Write-Host "$input1 $input2"

YAML パイプラインで、次を呼び出します。

- 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'

要件

要件 説明
パイプラインの種類 YAML、クラシック ビルド、クラシック リリース
上で実行 エージェント、DeploymentGroup
確認要求 なし
Capabilities このタスクは、ジョブ内の後続のタスクに対する要求を満たしていません。
コマンドの制限 Any
設定可能な変数 Any
エージェントのバージョン 2.115.0 以上
タスクのカテゴリ ユーティリティ

こちらもご覧ください