質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.59%

Windows10のPowerShell ISEコンソールにアプリケーションログが表示されない

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,412

yontabaru

score 19

 現在の現象・実現したいこと

Window10、PowerShell5.1の環境で、PowerShell ISEでps1ファイルを実行する際、
ps1内に記載している*.exe(アプリケーション)実行時のログが出力されないです。
以前は、ちゃんとアプリケーションログが表示されていたのですが、
いつからか、気が付いたら表示されなくなっていました。(他の人がPCを使用したころから?)
他の人のPCで、PowerShell ISEで同じps1ファイルを実行すると、ちゃんとアプリケーションログが表示されます。

アプリケーションログが表示されないだけで、実行はされていて、後続処理は正しく処理されています。。(echo文の出力で確認可能)

ps1ファイル内で実行しているアプリケーションの部分を、コンソールに直書きして実行すれば
ちゃんとアプリケーションログが表示されます。
ps1の実行で、アプリケーションの実行の部分のアプリケーションログが表示されません

どのようにしたら、再びアプリケーションログが表示されるようになるでしょうか。

実行方法

ps1の内容
        echo "実行開始"
        xxjob /RUN C:\temp\a_job #a_jobを指定して実行
        echo "実行終了"

表示されるはずのアプリケーションログ

                 〇〇Express 統計情報

入力 (1.1): C:\temp\AA.csv
最終更新日 10/03/2018 18:28:40
入力 (1.2): C:\temp\BB.csv
最終更新日 10/03/2018 18:28:29
入力 (1.3): C:\temp\CC.csv
最終更新日 10/03/2018 18:28:21
入力 (1.4): C:\temp\DD.csv
最終更新日 10/03/2018 18:35:58

レコード読み込み:                         16  データ読み込み(バイト):              252
レコードのマージ:                           16  データのマージ(バイト):                252
変換先(1): データベース MDBCONNECTION (名前: HY, 認証: 自動検出, ユーザー: admin), テーブル WK_TBL1
レコード出力(1):                           0  レコード出力(バイト) (1):               0

最終更新日 10/18/2018 11:04:23
レコード出力(2):                          16  レコード出力(バイト) (2):             252
出力レコードの削除(1):                    16  データの削除(バイト)(1):             204
出力レコードの削除(2):                     0  データの削除(バイト)(2):               0
入力レコード長:                           16  出力レコード長(1):                   13
                                            出力レコード長(2):                   16
ジョブからのメモリーガイドライン (MB): 200
割り当て済みの仮想メモリ (MB):          62  使用済み物理メモリ (MB):           30
使用する作業領域(バイト):                 0

処理時間:                      0:00:00.23  CPUタイム:                   0:00:00.15

10/18/2018 11:04:23 - 〇〇Express が完了しました

以前、コンソールに表示されていたログ

ps1を実行して、アプリケーション実行の行で、以前は下記のエラーが出ていました。
ps1は最後まで実行されていました。

*****************ここから*****コンソールに表示されていたログ**********
実行開始

発生場所 行:1 文字:12
+ xxjob /RUN C:\temp\a_job
+            ~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (Error!:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError

 【この後に、上記の表示されるはずのアプリケーションログが表示されていた。】

実行終了
*****************ここまで*****コンソールに表示されていたログ**********

そこで、私のPCのPowerShell ISEを管理者権限で実行し、
Enable-PSRemoting コマンドが実行したとのこと。

Disable-PSRemotingを実行したが、アプリケーションログが表示されないまま。
これが原因のような気がします。

現在のログ

*****************ここから*****コンソールに表示されていたログ**********
実行開始
       ←【上記の表示されるはずのアプリケーションログが表示されない】
実行終了
*****************ここまで*****コンソールに表示されていたログ**********

そこで、私のPCのPowerShell ISEを管理者権限で実行し、
Enable-PSRemoting コマンドが実行したとのこと。

Disable-PSRemotingを実行したが、アプリケーションログが表示されないまま。
これが原因のような気がします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • kamikazelight

    2018/10/18 12:13 編集

    Zuishin 様 の補足ですが PowerShell自身には自動でexeのログを出力する機能はありません。例えば「start-process excel」としてもログは受け取れません。ですが 圧縮解凍ソフトの「7zip」のコマンドラインバージョンのように実行時に新しくコンソールが表示されそこにログが表示されたりするものもあります。あとはその「ログ」がexeの標準出力にあるのであればそれを受け取り表示することもできます。yontabaru様のいうアプリケーションログとは何のことでしょうか?

    キャンセル

  • Zuishin

    2018/10/18 12:32

    これ、単にエラーメッセージが表示されてたのが改善されたってだけじゃないですか?

    キャンセル

  • yontabaru

    2018/10/18 12:34

    「7zip」のコマンドラインバージョンのように実行時に、コンソールにログが表示されるのと同じようなイメージで、ps1内で実行しているアプリはコンソールにログを表示するタイプのものです。業務上具体的なアプリ名が言えなくて申し訳ありません。

    キャンセル

回答 2

checkベストアンサー

+2

Enable-PSRemoting は特に関係ないと思います。
修正依頼内での回答で「ps1内で実行しているアプリはコンソールにログを表示するタイプのものです。」とありますがこれはpowershellのコンソールではなく 別の
コンソールということでいいでしょうか。
もしそうならばZuishin様の回答とほぼ同じ回答になります。
あとは そのexe 更新されていたりしないでしょうか?

ほかのパソコンだと表示されるとのことなのでexeの挙動が変わったとは考えづらいですが...

あとは、もしも
ログの表示がpowershellのコンソールである場合は
exe実行直前にWrite-host "エラー出力:$ErrorActionPreference"と入れてみてください
もしもコンソールにエラー出力:Continue以外の結果が出た場合は
$ErrorActionPreference = "Continue"をexe実行前に追加してください。

ただやはり、exeをどうやって実行しているのか(start-processを使っている、wshのrunを使っている 引数を指定している等)が分からないとこれ以上のことはわかりません。

--資料リンク追記--
PowerShellコンソールエラーを非表示にする方法

--追記--
すみません
実行方法見逃してました。
見たのですが
xxjob /RUN がよくわかりません
自作関数でしょうか?

--追記--
xxjob /RUN がよくわからないので
Write-host "エラー出力:$ErrorActionPreference"
xxjob /RUN の後にも入れて
結果を確認してください。
それでもxxjob /RUN の中で$ErrorActionPreferenceを書き換えて
処理を行い
$ErrorActionPreferenceをもとに戻している可能性もあるので
何とも言えないですが...

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/18 17:47

    前回の質問はスルーしてください。

    すみません エラーばかりに目が行ってしまいましたが
    そういえば「表示されるはずのアプリケーションログ」に記載されている内容は
    明らかにエラーではないですね、忘れていました....

    そこは実行すると現在どうなるのでしょうか?
    「以前、コンソールに表示されていたログ」とは別の実行箇所....ですよね?
    先入観で同じコードの実行結果だと思い込んでいたのですが
    どうなのでしょうか?

    とりあえず
    「表示されるはずのアプリケーションログ」を出力するはずのコードと
    Write-host "Count:$($Tmpdebug.count)"
    を「表示されるはずのアプリケーションログ」を出力するコマンドの直前に入れた場合の
    結果を教えていただきたいです。

    このコードは現在実行中のタスクの数を返します。
    値が受け取れれば exeファイルからの戻り値はうけとれる
    と分かります。

    エラーは戻り値....とは違うのでいったん
    「以前、コンソールに表示されていたログ」と「現在のログ」は
    置いておいて
    「表示されるはずのアプリケーションログ」が出ない理由を先に
    確認したほうがいいと思います。

    キャンセル

  • 2018/10/24 11:17

    やはり、レジストリなど変更されているようです。
    アプリログは、正常終了でも異常終了の際でも
    統計情報など出力します。その中でエラーが発生すれば、エラーコードも正しく返しています。
    ただ、PS ISEのコンソールに、そのログ内容が表示されなくなってしまったのは
    ちょっと困りものですが、環境が変わってしまったようなので仕方ないと諦めます。

    いろいろと考えて教えていただいたのにすみませんでした。
    ありがとうございました。

    キャンセル

  • 2018/10/24 12:57

    力足りずにすみません。
    何かお役に立てればいいのですが

    キャンセル

+1

「実行開始」「実行終了」が表示されているので、PowerShell のせいではないでしょう。
どう見ても xxjob が異常終了してエラーメッセージを出していますので、今まで表示されていたものがエラーメッセージであることも間違いないと思います。

スクリプトを使わず xxjob をテスト実行し、正常終了してもログが表示されるかどうか確かめてください。
また、わざと異常終了させてみて、ログが表示されるかどうかも確かめてください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/18 16:55

    ps1を、PowerShell ISEで開いて、実行しています。

    ps1の内容
    echo "実行開始"
    xxjob /RUN C:\temp\a_job         #a_jobを指定して実行
    echo "実行終了"

    このxxjobの書き方で、標準出力をリダイレクトしていることになるのでしょうか・・・
    2>>出力ファイル とかしてませんけど・・・

    ISEでは、コンソールに、ps1+エンターキーで実行しています。
    スクリプト自体のリダイレクトはしていません。


    以前から、この書き方でISEで実行していました。それが今朝来たら、ISEコンソールに
    xxjobの実行内容=アプリケーションログが表示できなくなっていました。

    ISEのコンソールに
    xxjob~を直書きして実行させると、昨日以前も今朝も変わりなく、
    xxjobの実行内容=アプリケーションログが表示されています。

    キャンセル

  • 2018/10/18 17:02

    $a = C:\temp\a_job
    echo $a

    だとどうなりますか?

    C:\temp\a_job | Out-Host

    では?

    キャンセル

  • 2018/10/24 11:15

    やはり、レジストリなど変更されているようです。
    アプリログは、正常終了でも異常終了の際でも
    統計情報など出力します。その中でエラーが発生すれば、エラーコードも正しく返しています。
    ただ、PS ISEのコンソールに、そのログ内容が表示されなくなってしまったのは
    ちょっと困りものですが、環境が変わってしまったようなので仕方ないと諦めます。

    いろいろと考えて教えていただいたのにすみませんでした。
    ありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.59%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る