1) $error 変数には実行時のエラーが蓄積されていく。
そのまま。 $error で全部出力する。
PS C:Users> $error
型 System.String のオブジェクトにインデックスを付けることはできません。
発生場所 行:1 文字:9
+ $string[ <<<< 3]="t"
+ CategoryInfo : InvalidOperation: (3:Int32) []、RuntimeException
+ FullyQualifiedErrorId : CannotIndex
null 配列にインデックスを付けることはできません。
発生場所 行:1 文字:7
+ $hoge[ <<<< 3]="t"
+ CategoryInfo : InvalidOperation: (3:Int32) []、RuntimeException
+ FullyQualifiedErrorId : NullArray
........
length を利用することでエラー数が分かるかと思ったが、無理。
PS C:Users> $error.length
で何も得られない。
とりあえず、下記のような if 文を利用して、エラーが無いかどうかは確認できる。
PS C:Users> if ( $error -ne $null ) { $error }
型 System.String のオブジェクトにインデックスを付けることはできません。
発生場所 行:1 文字:9
+ $string[ <<<< 3]="t"
+ CategoryInfo : InvalidOperation: (3:Int32) []、RuntimeException
+ FullyQualifiedErrorId : CannotIndex
null 配列にインデックスを付けることはできません。
発生場所 行:1 文字:7
+ $hoge[ <<<< 3]="t"
+ CategoryInfo : InvalidOperation: (3:Int32) []、RuntimeException
+ FullyQualifiedErrorId : NullArray
null 配列にインデックスを付けることはできません。
発生場所 行:1 文字:4
+ $a[ <<<< 10][10]
+ CategoryInfo : InvalidOperation: (10:Int32) []、RuntimeException
+ FullyQualifiedErrorId : NullArray
......
とりあえず、各要素は配列として取れる。
PS C:Users> $error[0]
型 System.String のオブジェクトにインデックスを付けることはできません。
発生場所 行:1 文字:9
+ $string[ <<<< 3]="t"
+ CategoryInfo : InvalidOperation: (3:Int32) []、RuntimeException
+ FullyQualifiedErrorId : CannotIndex
下記のように Write-Error というコマンドレットを利用して、
エラーを出力することも可能。ちゃんとエラーの先頭に。
PS C:Users> write-error "test error"
write-error "test error" : test error
+ CategoryInfo : NotSpecified: (:) [Write-Error]、WriteErrorException
+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException
PS C:Users> $error[0]
write-error "test error" : test error
+ CategoryInfo : NotSpecified: (:) [Write-Error]、WriteErrorException
+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException
GetType() メソッドでオブジェクトの情報が取得できるらしい。
これによると、ArrayList オブジェクトらしい。
PS C:Users> $error.gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True ArrayList System.Object
わかりにくい…。
そのまま。 $error で全部出力する。
PS C:Users> $error
型 System.String のオブジェクトにインデックスを付けることはできません。
発生場所 行:1 文字:9
+ $string[ <<<< 3]="t"
+ CategoryInfo : InvalidOperation: (3:Int32) []、RuntimeException
+ FullyQualifiedErrorId : CannotIndex
null 配列にインデックスを付けることはできません。
発生場所 行:1 文字:7
+ $hoge[ <<<< 3]="t"
+ CategoryInfo : InvalidOperation: (3:Int32) []、RuntimeException
+ FullyQualifiedErrorId : NullArray
........
length を利用することでエラー数が分かるかと思ったが、無理。
PS C:Users> $error.length
で何も得られない。
とりあえず、下記のような if 文を利用して、エラーが無いかどうかは確認できる。
PS C:Users> if ( $error -ne $null ) { $error }
型 System.String のオブジェクトにインデックスを付けることはできません。
発生場所 行:1 文字:9
+ $string[ <<<< 3]="t"
+ CategoryInfo : InvalidOperation: (3:Int32) []、RuntimeException
+ FullyQualifiedErrorId : CannotIndex
null 配列にインデックスを付けることはできません。
発生場所 行:1 文字:7
+ $hoge[ <<<< 3]="t"
+ CategoryInfo : InvalidOperation: (3:Int32) []、RuntimeException
+ FullyQualifiedErrorId : NullArray
null 配列にインデックスを付けることはできません。
発生場所 行:1 文字:4
+ $a[ <<<< 10][10]
+ CategoryInfo : InvalidOperation: (10:Int32) []、RuntimeException
+ FullyQualifiedErrorId : NullArray
......
とりあえず、各要素は配列として取れる。
PS C:Users> $error[0]
型 System.String のオブジェクトにインデックスを付けることはできません。
発生場所 行:1 文字:9
+ $string[ <<<< 3]="t"
+ CategoryInfo : InvalidOperation: (3:Int32) []、RuntimeException
+ FullyQualifiedErrorId : CannotIndex
下記のように Write-Error というコマンドレットを利用して、
エラーを出力することも可能。ちゃんとエラーの先頭に。
PS C:Users> write-error "test error"
write-error "test error" : test error
+ CategoryInfo : NotSpecified: (:) [Write-Error]、WriteErrorException
+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException
PS C:Users> $error[0]
write-error "test error" : test error
+ CategoryInfo : NotSpecified: (:) [Write-Error]、WriteErrorException
+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException
GetType() メソッドでオブジェクトの情報が取得できるらしい。
これによると、ArrayList オブジェクトらしい。
PS C:Users> $error.gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True ArrayList System.Object
わかりにくい…。
※コメント投稿者のブログIDはブログ作成者のみに通知されます