$error.countで成否判定を行いたい
お世話になります。
現在スクリプトを作成しており、成否判定を
errorが発生して回数で行おうと考えております。以下のようにerrorが発生した回数を$checkに格納し
その後errorが発生したかどうか判定しています。
$check = $error.count<ここでerrorを発生させるコマンドを入力する>
if($check -eq $error.count){
Write-Host "0"
}
else{
Write-Host "1"
}ですが、$error.countの回数が変わると、$checkの値も変わって
しまいます。
powershellの変数は「$check = $error.count」のように値を
格納すると、紐付けされてしまうのでしょうか。もう一つ、少し別の話になってしまうのですが、$errorのような
変数の値を初期化($error.countの値を0にしたい)はできるのしょうか。稚拙な質問で恐縮ですが、どうかご教示お願いします。
回答
こんにちは、naginoです。
手元の Windows XP 上の PowerShell 1.0 の環境でざっと試した限りでは $Check と $Error.Count が紐付くようなことはないようです。
$Error.Count は Int32 型ですので、紐付くようなことはないかと思うのですが・・・。
あと、$Error は $Error.GetType() とすると分かるように実体は ArrayList ですので、中身をクリアしたいのであれば、例えば以下のような感じでしょうか。
> $Error.Clear()
MCITP(Database Developer/Database Administrator)- 回答としてマーク服部清次MSFT, モデレータ2009年7月14日 8:23
- 自分もVistaで1.0で確認しましたが、ひも付いていません。多分、ロジックの問題だと思います。紐つくと思った理由を書いていただくか、差し支えがなければコードを全文貼り付けていただくと問題解決が早くできると思います。//まずい部分はモザイクかけるなどして。。
http://techbank.jp/nora/(SQL Serverを中心に情報発信中)- 回答としてマーク服部清次MSFT, モデレータ2009年7月14日 8:24
すべての返信
こんにちは、naginoです。
手元の Windows XP 上の PowerShell 1.0 の環境でざっと試した限りでは $Check と $Error.Count が紐付くようなことはないようです。
$Error.Count は Int32 型ですので、紐付くようなことはないかと思うのですが・・・。
あと、$Error は $Error.GetType() とすると分かるように実体は ArrayList ですので、中身をクリアしたいのであれば、例えば以下のような感じでしょうか。
> $Error.Clear()
MCITP(Database Developer/Database Administrator)- 回答としてマーク服部清次MSFT, モデレータ2009年7月14日 8:23
- 自分もVistaで1.0で確認しましたが、ひも付いていません。多分、ロジックの問題だと思います。紐つくと思った理由を書いていただくか、差し支えがなければコードを全文貼り付けていただくと問題解決が早くできると思います。//まずい部分はモザイクかけるなどして。。
http://techbank.jp/nora/(SQL Serverを中心に情報発信中)- 回答としてマーク服部清次MSFT, モデレータ2009年7月14日 8:24
naginoさん、野良さん
返信していただき、有難うございます。
紐づいてしまう理由がまだ判明していないのですが、
naginoさんが教えていただいた方法でerror.countの値を
初期化する方法でerrorの成否判定を行うことができました。野良さん
紐づくと考えた理由ですが、最初に
$check = $error.count
と入力して、カウントの値を$checkにいれた後エラーを発生させると、
$checkの値も変更してしまったからです。
(その後$checkに値をいれるようなコマンドは入れていない)とりあえず意図した挙動はできたので、紐づいてしまう理由は時間が
あるときに検証したいと思います。質問に回答していただいて有難うございました。
kakiage さん、
こんにちは!
フォーラム オペレーターの服部 清次です。
今回、nagino さんと 野良 さんが紹介してくださった情報が参考になったのではないかと思いましたので、勝手ながら私の方で [回答としてマーク] のチェックを付けさせていただきました。
kakiage さんと同じ疑問を持たれた他の方々にも、ぜひこちらの情報を役立てていただきたいと思いますので。
もし、その後 kakiage さんの方で分かったことがありましたら、ぜひ情報を共有していただけると嬉しいです。 (^^)
また何か困ったことがありましたら、ぜひ TechNet フォーラムに投稿してください。
今後とも、TechNet フォーラムをよろしくお願いします。
それでは、また! (^_^)/
__________________________________________________
マイクロソフト株式会社 フォーラム オペレーター 服部 清次

