PowerShell,エラー情報を、指定した変数に格納・追記する

スポンサーリンク

鍛錬 497

PowerShell,エラー情報を、指定した変数に格納・追記する方法

エラー情報を指定した変数に格納したり、指定した変数に追記するには、パラメータの -ErrorVariable を使用します。
 
使用方法は、以下に示す通りです。

指定した変数に格納する

コマンドレット -ErrorVariable 変数

 
指定した変数に追記して格納する

コマンドレット -ErrorVariable +変数

パラメータ

以下は、上記のパラメータについてです。

パラメータ 機能
-ErrorVariable エラー情報を指定した変数に格納する
スポンサーリンク

スクリプト

以下は、エラー情報を指定した変数に格納するスクリプト、get_error.ps1 です。

今回は、存在しないファイルを cat で表示させようとして3回エラーを発生させ、エラー情報を変数 $err_info に格納しています。

3回目にエラーを発生させた際は、変数に追記しています。

また、エラー情報をコンソールに表示させずに結果を見やすくするため、$ErrorActionPreference を使用しています。

関連記事:Windows-PS,エラー発生時、エラー情報を非表示にする方法

順序 処理内容
1回目のエラー エラー情報を変数に「格納」する
2回目のエラー エラー情報を変数に「格納」する
3回目のエラー エラー情報を変数に「追記」する
# 存在しないファイル名を格納
$filename_A = "AAAAAAAAAA.txt"
$filename_B = "BBBBBBBBBB.txt"
$filename_C = "CCCCCCCCCC.txt"

# エラー情報を表示せずに,処理を継続するように設定
$ErrorActionPreference = "SilentlyContinue"

echo "エラー情報を変数に格納------------"
cat $filename_A -ErrorVariable err_info
echo $err_info
echo "----------------------------------`r`n`r`n"

echo "再び,エラー情報を変数に格納-------"
cat $filename_B -ErrorVariable err_info
echo $err_info
echo "----------------------------------`r`n`r`n"

echo "エラー情報を変数に追記------------"
cat $filename_C -ErrorVariable +err_info
echo $err_info
echo "----------------------------------"
スポンサーリンク

実行結果

以下は、スクリプト get_error.ps1 を実行しています。

PS D:\tmp>
PS D:\tmp> .\get_error.ps1
エラー情報を変数に格納------------
cat : パス 'D:\tmp\AAAAAAAAAA.txt' が存在しないため検出できません。
発生場所 D:\tmp\get_error.ps1.ps1:11 文字:1
+ cat $filename_A -ErrorVariable err_info
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (D:\tmp\AAAAAAAAAA.txt:String) [Get-Content], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand

----------------------------------


再び,エラー情報を変数に格納-------
cat : パス 'D:\tmp\BBBBBBBBBB.txt' が存在しないため検出できません。
発生場所 D:\tmp\get_error.ps1.ps1:16 文字:1
+ cat $filename_B -ErrorVariable err_info
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (D:\tmp\BBBBBBBBBB.txt:String) [Get-Content], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand

----------------------------------


エラー情報を変数に追記------------
cat : パス 'D:\tmp\BBBBBBBBBB.txt' が存在しないため検出できません。
発生場所 D:\tmp\get_error.ps1.ps1:16 文字:1
+ cat $filename_B -ErrorVariable err_info
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (D:\tmp\BBBBBBBBBB.txt:String) [Get-Content], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand

cat : パス 'D:\tmp\CCCCCCCCCC.txt' が存在しないため検出できません。
発生場所 D:\tmp\get_error.ps1.ps1:21 文字:1
+ cat $filename_C -ErrorVariable +err_info
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (D:\tmp\CCCCCCCCCC.txt:String) [Get-Content], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand

----------------------------------

 
上記に示した通り、エラー情報を指定した変数に格納することができました。

タイトルとURLをコピーしました