質問する質問する
 

回答済み$error.countで成否判定を行いたい

  • 2009年6月4日 6:50kakiage ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     

    お世話になります。

    現在スクリプトを作成しており、成否判定を
    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にしたい)はできるのしょうか。

    稚拙な質問で恐縮ですが、どうかご教示お願いします。

回答

  • 2009年6月4日 7:54naginoMVPユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     回答済み

    こんにちは、naginoです。

    手元の Windows XP 上の PowerShell 1.0 の環境でざっと試した限りでは $Check と $Error.Count が紐付くようなことはないようです。
    $Error.Count は Int32 型ですので、紐付くようなことはないかと思うのですが・・・。

    あと、$Error は $Error.GetType() とすると分かるように実体は ArrayList ですので、中身をクリアしたいのであれば、例えば以下のような感じでしょうか。
    > $Error.Clear()


    MCITP(Database Developer/Database Administrator)
  • 2009年6月4日 12:14野良 ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     回答済み
    自分もVistaで1.0で確認しましたが、ひも付いていません。

    多分、ロジックの問題だと思います。
    紐つくと思った理由を書いていただくか、差し支えがなければコードを全文貼り付けていただくと問題解決が早くできると思います。
    //まずい部分はモザイクかけるなどして。。

    http://techbank.jp/nora/(SQL Serverを中心に情報発信中)

すべての返信

  • 2009年6月4日 7:54naginoMVPユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     回答済み

    こんにちは、naginoです。

    手元の Windows XP 上の PowerShell 1.0 の環境でざっと試した限りでは $Check と $Error.Count が紐付くようなことはないようです。
    $Error.Count は Int32 型ですので、紐付くようなことはないかと思うのですが・・・。

    あと、$Error は $Error.GetType() とすると分かるように実体は ArrayList ですので、中身をクリアしたいのであれば、例えば以下のような感じでしょうか。
    > $Error.Clear()


    MCITP(Database Developer/Database Administrator)
  • 2009年6月4日 12:14野良 ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     回答済み
    自分もVistaで1.0で確認しましたが、ひも付いていません。

    多分、ロジックの問題だと思います。
    紐つくと思った理由を書いていただくか、差し支えがなければコードを全文貼り付けていただくと問題解決が早くできると思います。
    //まずい部分はモザイクかけるなどして。。

    http://techbank.jp/nora/(SQL Serverを中心に情報発信中)
  • 2009年6月9日 5:59kakiage ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     

    naginoさん、野良さん

    返信していただき、有難うございます。

    紐づいてしまう理由がまだ判明していないのですが、
    naginoさんが教えていただいた方法でerror.countの値を
    初期化する方法でerrorの成否判定を行うことができました。

    野良さん

    紐づくと考えた理由ですが、最初に

    $check = $error.count

    と入力して、カウントの値を$checkにいれた後エラーを発生させると、
    $checkの値も変更してしまったからです。
    (その後$checkに値をいれるようなコマンドは入れていない)

    とりあえず意図した挙動はできたので、紐づいてしまう理由は時間が
    あるときに検証したいと思います。

    質問に回答していただいて有難うございました。

  • 2009年7月14日 8:25服部清次MSFT, モデレータユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     

    kakiage さん、

    こんにちは!
    フォーラム オペレーターの服部 清次です。

    今回、nagino さんと 野良 さんが紹介してくださった情報が参考になったのではないかと思いましたので、勝手ながら私の方で [回答としてマーク] のチェックを付けさせていただきました。
    kakiage さんと同じ疑問を持たれた他の方々にも、ぜひこちらの情報を役立てていただきたいと思いますので。
    もし、その後 kakiage さんの方で分かったことがありましたら、ぜひ情報を共有していただけると嬉しいです。 (^^)

    また何か困ったことがありましたら、ぜひ TechNet フォーラムに投稿してください。
    今後とも、TechNet フォーラムをよろしくお願いします。
    それでは、また! (^_^)/


    __________________________________________________
    マイクロソフト株式会社 フォーラム オペレーター 服部 清次