JP1サポート技術者ブログ

JP1サポート技術者ブログ>【JP1/AJS3】JP1からだとバッチが実行できない!?

  • ジョブ管理
2018.01.17

【JP1/AJS3】JP1からだとバッチが実行できない!?

WindowsのGUIから手動で実行できたバッチファイルが、JP1/AJS3からだと実行できなかった経験はありませんか?実は、Windowsにログオンした状態から手動でバッチファイルを実行する場合と、JP1/AJS3から実行する場合では、ジョブのプロセスの生成方法などが異なります。
それにより、ジョブによっては実行環境の違いが原因で実行できないことがあります
今回は、Windows版JP1/AJS3でバッチファイルを実行する上での、設定上の注意点をご紹介します。

1.JP1とOSのジョブ実行環境の違い

JP1/AJS3でジョブを実行する際、手動(OS上)でスクリプトを実行する時と何が異なるのか、
以下の表にまとめました。
項番 項目 JP1から実行した場合
1. 環境変数 JP1/AJS3のジョブの実行環境には、ユーザー環境変数は設定されません。
システム環境変数のみが設定されます。
2. ユーザープロファイル バージョン10以前のJP1/AJS3のデフォルト設定では、ユーザープロファイル
(レジストリのHKEY_CURRENT_USER以下の情報)を読み込みません。
プリンタへの印刷やEXCELのマクロの実行などで、上記レジストリ情報を
読み込めないと、実行できない事例があります。
3. 実行OSユーザー JP1/AJS3では実行登録したJP1ユーザーとマッピングしているOSユーザーで
ジョブが実行されます。
4. 基本優先度
(プライオリティ)
JP1/AJS3のデフォルトの設定では基本優先度は「低」で実行されます。
5. ファイルディスクリプタ 標準出力や標準エラー出力、標準入力が手動で実行した場合と異なります。
ジョブ定義の標準入力ファイルが指定されていない場合、ジョブ実行時に
標準入力として、NULデバイスを割り当てています。
timeoutコマンドなど標準入力に対応していないコマンドは正常に終了しません。
6. 実行空間 JP1/AJS3のジョブはサービス空間で実行されます。
ログオン時に設定される情報(環境変数やネットワーク共有)を使用することが
できません。また画面表示が必要なジョブや対話型処理が必要なジョブも
実行することはできません。
7. ネットワーク共有 Windows2003では「ネットワークドライブの割り当て」によって
割り当てられたドライブ名は、ジョブ実行環境では有効になっていません。
8. カレントディレクトリ [ワークパス]を指定しない場合、デフォルトでは以下のフォルダが
カレントディレクトリとなります。
[Windows2003の場合]
 <JP1フォルダ>\JP1AJS2\tmp
[Windows2008以降の場合]
 C:\ProgramData\Hitachi\jp1\jp1_default\JP1AJS2\tmp
9. ジョブの実行ファイル名 JP1/AJS3からジョブを実行した場合、実行ファイル名がロングファイル名だと
ショートネーム形式に 変換してからジョブが実行されます。
実行しているジョブによってはこの動作により正しく動作しなくなる可能性があります。
10. WOW64環境の問題 WOW64環境で%systemroot%\system32下の64ビットアプリケーションを
起動できません。
11. UACの問題 WindowsのUAC機能を有効にしていると、ビルトインAdministratorを除く、
すべてのAdministratorsグループのOSユーザーは、Administrators権限が
無効な状態で動作してしまいます。
12. デスクトップ
プロセスの問題
JP1/AJS3サービスのセッションとジョブを実行したユーザーで保持する
デスクトッププロセスのセッションが異なっており、このためにデスクトップが
認識できません。Excelのマクロ実行時の動作で認識できない事例があります。

2.対処方法

項目ごとの対処方法をご紹介します。
1. 環境変数
  ユーザー環境変数に指定している変数を、ジョブ内の環境変数に定義してください。

2. ユーザープロファイル
  以下の手順を実施して、ユーザープロファイルの設定を有効にしてください。

(1)JP1/AJS3サービスを停止

(2)ユーザープロファイルの設定をするコマンドを実行
> jajs_config -k [JP1_DEFAULT\JP1NBQAGENT\Job] "LoadUserProfile"=dword:1
> jajs_config -k [JP1_DEFAULT\JP1NBQAGENT\Job] "IsAccessTokenCache"=dword:1
※論理ホストを利用している時は[JP1_DEFAULT]に[論理ホスト名]を入れてください。

(3)JP1/AJS3サービスを起動

【参考マニュアル】
 JP1 Version 11 JP1/Automatic Job Management System 3 構築ガイド
  6.2.16 ユーザープロファイルを必要とするジョブを実行するための設定
  http://itdoc.hitachi.co.jp/manuals/3021/30213B1510/AJSX0076.HTM

3. 実行OSユーザー
  手動で実行したOSユーザーと同一のユーザーでジョブを実行するようにしてください。

4. 基本優先度(プライオリティ)
  PCジョブの定義の「実行優先順位」の設定により優先度を変更することが可能です。
  デフォルトは「なし」ですが、「3」にすることで手動環境と同様のプライオリティになります。

5. ファイルディスクリプタ
  ジョブの「標準入力ファイル名」「標準出力ファイル名」「標準エラー出力ファイル名」に
  「CON」と指定
してください。

6. 実行空間
  JP1/Scriptと連携することで対応可能です。
  また、この問題かどうかはOSのタスクスケジューラーから「デスクトップとの対話をサービスに許可」
  外した状態で実行することによって、JP1のサービス空間で実行できるか、切り分け可能です。

7.ネットワーク共有
 ジョブの中でネットワーク共有を行うか、UNC指定を行うことで対応可能です。
 なお、UNC指定を行なう場合、ジョブ実行OSユーザーでアクセスできる ことが前提です。
 以下、例のように指定してください。
 例) \\10.10.10.1\JP1\ファイル名

8. カレントディレクトリ
  ジョブ定義の[ワークパス]に、利用したいフォルダ名を記載してください。

9. ジョブの実行ファイル名
  以下の手順を実施して、ロングファイルを実行する設定を有効にしてください。

(1)JP1/AJS3サービスを停止

(2)ロングファイル名での実行を有効化する
> jajs_config -k [JP1_DEFAULT\JP1NBQAGENT\Job] "IsExecFindExecutable"=dword:1
※論理ホストを利用している時は[JP1_DEFAULT]に[論理ホスト名]を入れてください。
(3)JP1/AJS3サービスを起動

【参考マニュアル】
 JP1 Version 11 JP1/Automatic Job Management System 3 構築ガイド
  6.2.16 ユーザープロファイルを必要とするジョブを実行するための設定
  http://itdoc.hitachi.co.jp/manuals/3021/30213B1510/AJSX0076.HTM

10. WOW64環境の問題
  以下の手順を実施して、WOW64環境を実行する設定を有効にしてください。 

  <Windows2008以降の場合>
  %systemroot%\system32配下の代わりに%systemroot%\sysnative配下に
  アクセスするようにしてください。
  例) %systemroot%\sysnative\cscript

  【参考マニュアル】
  JP1 Version 11 JP1/Automatic Job Management System 3 設計ガイド(システム構築編)
   9.5.1 WOW64環境でx86対応のJP1/AJS3を使用する場合の注意事項
   http://itdoc.hitachi.co.jp/manuals/3021/30213B1310/AJSH0171.HTM

11. UACの問題
  以下の手順を実施して、UAC環境でも実行できるようにする設定を有効にしてください。

(1)JP1/AJS3サービスを停止

(2)UAC機能有効時でもadministrators権限でジョブを実行できる設定をする
  1.任意のファイルを作成し、以下を記載する
  例) C:\JP1\jajs_add.conf
  ---------------------------------------------
  [JP1_DEFAULT\JP1NBQAGENT\Job]
  "UACAdministratorsExec"=dword:00000001
  ---------------------------------------------
  ※論理ホストを利用している時は[JP1_DEFAULT]に[論理ホスト名]を入れてください。
 
2.以下コマンドを実行して設定を有効化する
   > jbssetcnf C:\JP1\jajs_add.conf

(3)JP1/AJS3サービスを起動

12. デスクトッププロセスの問題
  以下のフォルダを作成したことにより、正しく動作した事例がございます。

  <64 bit 版 OFFICE 製品の場合>
   C:\Windows\System32\config\systemprofile\Desktop
 
  <32 bit 版 OFFICE 製品の場合>
   C:\Windows\SysWOW64\config\systemprofile\Desktop

  ※Microsoft Office は、対話型デスクトップおよびユーザープロファイルを
   想定して設計されているため、上記の対処でも、JP1/AJS3のような
   非対話型の製品での実行では動作しない場合があります。

3.まとめ

ご紹介したように、WindowsのGUIから手動で実行する場合と、JP1/AJS3から実行する場合で
動作が違うことがあります。
JP1/AJS3からだとジョブを実行できないという場合には、上記の観点でも確認をしてみてください。

製品正式名称/略称表記 および機能対応バージョン

JP1/Automatic Job Management System 3 - Manager/JP1/AJS3-Manager Version9.0以降
JP1/Automatic Job Management System 3 - Agent/JP1/AJS3-Agent Version9.0以降
JP1/Base/JP1/Base Version9.0以降


執筆者情報

2007年アシストに入社し一貫してJP1の顧客サポートを担当。「JP1サポート技術者ブログ」の編集リーダー。「JP1認定シニアコンサルタント」の資格保有者。このブログでは、知って便利な情報を紹介したいと思います。

休みの日は、家族の食事を毎食作り、子どもの世話をしています。

本田 祐次

関連している記事

  • ジョブ管理
2018.06.22

【JP1/AJS3】組み込みDBの無効領域を解消してジョブ遅延を予防しよう

JP1/AJS3の組み込みDBに「無効領域」が発生すると、ジョブの遅延や異常終了に繋がるのをご存知でしたか?今回は、無効領域の増加が引き起こす3つの問題と、正しいメンテナンス方法をご紹介します。

  • ジョブ管理
2018.04.26

【JP1/AJS3】ジョブがキューイングする5つの原因と対処方法

JP1/AJSのジョブが、時間になっても開始されなかった経験はありませんか?今回は、JP1ジョブが「キューイング状態」となる5つの原因と対処方法をご紹介します。

  • ジョブ管理
2017.07.05

【JP1/AJS3】開始時刻が過ぎてしまったジョブを実行中止にする方法

トラブル対応やメンテナンスなどで、JP1/AJS3-Managerのサービスを再起動した後に、開始時刻が過ぎてしまっているジョブの実行を抑止する方法です。

ページの先頭へ戻る