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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Q&A

解決済

2回答

1786閲覧

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

yontabaru

総合スコア19

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

0グッド

0クリップ

投稿2018/10/18 02:24

編集2018/10/18 03:29

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

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を実行したが、アプリケーションログが表示されないまま。
これが原因のような気がします。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2018/10/18 02:29

アプリケーションログとは何ですか? それを説明しているサイトを紹介してください。
kamikazelight

2018/10/18 02:38

*.exe の実行方法(実行時のコード) と ログの出力場所(コンソールなのかlogファイルなのか等)。 あと出来ればログの内容と*.exeが何のソフトが教えてください。情報が足りません...
kamikazelight

2018/10/18 03:14 編集

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

2018/10/18 03:32

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

2018/10/18 03:34

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

回答2

0

ベストアンサー

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 06:03

編集2018/10/18 06:27
kamikazelight

総合スコア305

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yontabaru

2018/10/18 06:47

xxjobコマンドは、実行形式のxxjob.exeで、/RUNで どのジョブを実行するかのファイルを指定しています。 xxjobコマンドは、自作関数ではありません。 ○○Expressという製品をGUI環境ではなく実行するのではなく、 CUIで実行する際に使用するためのコマンドです。 ※例えば、実際は、excel.exeなのに、「ファイル名を指定して実行」などで コマンドラインにexcelと書いて実行できるのと同じです。 Write-host "エラー出力:$ErrorActionPreference"を前後に入れてpsファイルを実行すると、 xxjobの前後で、エラー出力:Continue がISEのコンソールに表示されます。 でも、昨日私が帰宅後のPC使用者がやったことといえば、 ①PS ISE(管理者として実行)で起動し、Enable-PSRemoting コマンドを実行した、 ②ps1実行時の出力内容が変わってしまったので、慌ててDisable-PSRemotingを実行した。 ③PS ISEコンソールに、アプリケーションログが表示されない状態になってしまったまま という報告を受けています… 【以前、コンソールに表示されていたログ】の + CategoryInfo : NotSpecified: (Error!:String) [], RemoteException + FullyQualifiedErrorId : NativeCommandError が気になって、上記の①のコマンドを実行して、再度ps1を実行したら上記のmsgだけでなく 今まで表示されていたアプリケーションログもさなくなった、と。 ②を実行しても、元の状態には戻らない、と。
kamikazelight

2018/10/18 07:51

なるほど `tasklist`等のように環境パスが通してあるのですね そうすると $ErrorActionPreference がちゃんと コンテニューに なっているのにエラーが出ていないので ほんとに出ていないのだと思いますが 確認で実行部分を下のように書き換えてください ```powershell echo "実行開始" try { xxjob /RUN C:\temp\a_job #a_jobを指定して実行 } catch { Write-Host "エラーキャッチ" } echo "実行終了" ``` これで`エラーキャッチ`と出力されれば エラー自体は発生しています。 どうなりますか?
kamikazelight

2018/10/18 08:47

前回の質問はスルーしてください。 すみません エラーばかりに目が行ってしまいましたが そういえば「表示されるはずのアプリケーションログ」に記載されている内容は 明らかにエラーではないですね、忘れていました.... そこは実行すると現在どうなるのでしょうか? 「以前、コンソールに表示されていたログ」とは別の実行箇所....ですよね? 先入観で同じコードの実行結果だと思い込んでいたのですが どうなのでしょうか? とりあえず 「表示されるはずのアプリケーションログ」を出力するはずのコードと Write-host "Count:$($Tmpdebug.count)" を「表示されるはずのアプリケーションログ」を出力するコマンドの直前に入れた場合の 結果を教えていただきたいです。 このコードは現在実行中のタスクの数を返します。 値が受け取れれば exeファイルからの戻り値はうけとれる と分かります。 エラーは戻り値....とは違うのでいったん 「以前、コンソールに表示されていたログ」と「現在のログ」は 置いておいて 「表示されるはずのアプリケーションログ」が出ない理由を先に 確認したほうがいいと思います。
yontabaru

2018/10/24 02:17

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

2018/10/24 03:57

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

0

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

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

投稿2018/10/18 03:46

Zuishin

総合スコア28656

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yontabaru

2018/10/18 06:12

スクリプトを使わず xxjob をテスト実行し、正常終了しても 【表示されるはずのアプリケーションログ】のように、統計情報などが出力されます。 xxjobがした際には、統計情報の上にエラー、警告内容が表示されていました。 例えば、DBにデータをinsertした際、既に同じデータがあると、 insertできなかった(キー重複が発生したなど)旨が表示されていました。 PowerShellの設定ではないでしょうか? Enable-PSRemoting コマンドは、PowerShellの設定に使用するコマンドの様です。 しかし、Disable-PSRemoting コマンドを実行しても元に戻らず アプリケーションログが表示されないままなんです。
Zuishin

2018/10/18 06:27

スクリプトの中で呼ぶか外で呼ぶかで出力が違うとなると、スクリプト自体がリダイレクトされているかスクリプトの中で標準出力をリダイレクトしているかということが考えられますが、詳細のわからないこちらでは調査が難しいですね。
yontabaru

2018/10/18 07: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の実行内容=アプリケーションログが表示されています。
Zuishin

2018/10/18 08:02

$a = C:\temp\a_job echo $a だとどうなりますか? C:\temp\a_job | Out-Host では?
yontabaru

2018/10/24 02:15

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問