adshscripttoolコマンド(ジョブ定義スクリプトの作成を支援する)【Windows限定】
形式
adshscripttool -fowner パス名 adshscripttool -fentry パス名 adshscripttool -fmode [-s {u|g|o|r|w|x}] モード adshscripttool -exec [-m {SIMPLE|MINIMUM}] {-r コマンドライン|ジョブ定義スクリプトファイルのパス名} [実行時パラメーター]
機能
ジョブ定義スクリプトを作成しやすくするための情報の取得や出力などを実行します。指定できる引数と用途を次に示します。
引数 |
実行内容 |
用途 |
---|---|---|
-fowner |
ファイルまたはフォルダの所有者名を出力します。 |
ファイルまたはフォルダの所有者のアクセス権を変更するために,ファイルまたはフォルダの所有者名を取得したい場合に使用します。 |
-fentry |
ファイルまたはフォルダのACLに登録されているアカウント名の一覧を出力します。 |
取得したACLのアカウント情報に従って,ジョブ定義スクリプト内のcaclsコマンドやattribコマンドの実行を変更したい場合に使用します。 |
-fmode |
chmodコマンドのモードとして指定されたシンボルまたは数値を解析して,「所有者」「グループ」「その他のユーザー」に対しての権限の変更内容を,ジョブ定義スクリプト中で使用しやすいように9桁の文字列として出力します。 -sオプションと同時に指定すると,-fmodeオプション指定時の出力のうち,ugorwxの指定に対応する桁の文字だけを出力します。 |
シンボルまたは数値の指定内容に従って,ジョブ定義スクリプト内のcaclsコマンドやattribコマンドの実行を変更したい場合に使用します。 |
-exec |
指定したコマンドラインまたはジョブ定義スクリプトを子孫ジョブとして実行します。 |
指定したコマンドラインまたはジョブ定義スクリプトを子孫ジョブとして実行したい場合に使用します。 |
引数
- -fowner
-
ファイルまたはフォルダの所有者名を標準出力に出力します。
出力する所有者名の形式は,「ドメインまたはコンピュータ名\ユーザー名」または「ユーザー名」となります。
caclsコマンドでCreator Ownerを定義しても,ファイルまたはフォルダの所有者とマッピングされない場合があります。caclsコマンドで所有者名を指定する前に,このオプションを指定してadshscripttoolコマンドを実行し,所有者名を求めておいてください。
- -fentry
-
ファイルまたはフォルダのACLに登録されているアカウント名の一覧を「;(セミコロン)」区切りで標準出力に出力します。
出力するアカウント名の形式は「ドメインまたはコンピュータ名\ユーザー名」または「ユーザー名」となります。
- パス名
-
対象とするファイルまたはフォルダを指定します。
- -fmode
-
chmodコマンドのモードとして指定されたシンボルまたは数値を解析し,「所有者」「グループ」「その他のユーザー」に対しての権限の変更内容を9桁の文字列として標準出力に出力します。
数値が指定された場合,モードビットONに対応する値をRに,モードビットOFFに対応する値をDに設定します。エラー時は'E'だけを出力して終了します。
-fmodeオプション指定時のadshscripttoolコマンドの実行結果として出力される文字列の意味を桁ごとに次に示します。
左から数えた桁番号
意味
1
所有者の読み込み権限
2
所有者の書き込み権限
3
所有者の実行権限
4
グループの読み込み権限
5
グループの書き込み権限
6
グループの実行権限
7
その他のユーザーの読み込み権限
8
その他のユーザーの書き込み権限
9
その他のユーザーの実行権限
各桁には次の値が設定されます。
値
意味
A
追加(「+」が設定された)
D
削除(「-」が設定された)
R
置き換え(「=」または数値が設定された)
0
指定されていない
E
adshscripttool -fmodeコマンドの実行がエラー終了
- -s{u|g|o|r|w|x}
-
-fmodeオプション指定時の出力のうち,出力する桁を次の中から指定します。-fmodeオプションの指定時に指定できます。
-
u
-fmodeオプション指定時の出力のうち,1〜3桁目に対応します。
-
g
-fmodeオプション指定時の出力のうち,4〜6桁目に対応します。
-
o
-fmodeオプション指定時の出力のうち,7〜9桁目に対応します。
-
r
-fmodeオプション指定時の出力のうち,1,4,7桁目に対応します。
-
w
-fmodeオプション指定時の出力のうち,2,5,8桁目に対応します。
-
x
-fmodeオプション指定時の出力のうち,3,6,9桁目に対応します。
-
- モード
-
8桁の数値またはシンボルを指定します。-fmodeオプションの指定時に指定できます。
-
数値で指定する場合
8進数で指定します。8進数以外または8進数の07777(10進数の4095)より大きな値が指定されるとエラーとなります。
-
シンボルで指定する場合
何も指定されていない状態(数値表現での0)に対して設定・追加・削除を設定します。シンボルの指定結果が結果として出力されます。
シンボルとして指定できる内容を次に示します。複数指定する場合は間をコンマ(,)で区切ってください。
シンボル内の順序
指定できる値
1つ目
アクセス権を設定する項目を指定します。複数同時に指定できます。
指定できる項目を次に示します。省略するとすべてのユーザーが仮定されます。
-
u:所有者
-
g:グループ
-
o:その他
-
a:全ユーザー
2つ目
モードに対する操作を指定します。1つ目のシンボルで指定された項目に対して次の処理をします。
-
=:アクセス権の設定(上書き)
-
+:アクセス権の追加
-
-:アクセス権の削除
設定,追加および削除する値は,3つ目のシンボルで指定します。
3つ目のシンボルに続いて2つ目および3つ目のシンボルを記述できます。3つ目のシンボルは省略できます。
3つ目
設定するアクセス権を指定します。複数同時に指定できます。指定できる値を次に示します。
-
r:読み取り
-
w:書き込み
-
x:実行
省略するとアクセス権を設定する項目を消去します。消去した値を2つ目のシンボルに従って設定,追加および削除します。追加および削除だけでは値は変化しません。
s,t,u,g,oは指定しても無視されます。
-
-
- -exec
-
-rオプションに指定したコマンドライン,または指定したジョブ定義スクリプトファイルを子孫ジョブとして実行します。
- -m {SIMPLE|MINIMUM}
-
標準出力,標準エラー出力への出力方式を指定します。-execオプションの指定時に指定できます。簡潔出力モードと最小出力モードについては,「3.4.4 ジョブ実行ログへの情報メッセージと警告メッセージの出力を抑止する」を参照してください。
-
SIMPLE
実行する子孫ジョブを簡潔出力モードで動作します。
-
MINIMUM
実行する子孫ジョブを最小出力モードで動作します。
子孫ジョブ形式のサンプルスクリプトは最小出力モードで動作します。そのため,子孫ジョブ形式のサンプルスクリプト内でこのコマンドを使用する場合,-mオプションにはMINIMUMの指定を推奨します。
-
- -r コマンドライン
-
ジョブで実行する内容をコマンドラインに指定します。-execオプションの指定時に指定できます。
-rオプションに指定した内容は,スプールジョブディレクトリにジョブ定義スクリプトファイルとして作成されません。そのため,メッセージなどのジョブ定義スクリプトファイル名の出力個所には,ジョブ定義スクリプトファイルの絶対パスではなく「"-r CMDLINE"」が出力されます。
- コマンドラインの指定
-
コマンドラインには,シェル運用コマンドやUNIX互換コマンドなど,ジョブ定義スクリプトに記載できるコマンドを指定できます。コマンドラインにシェル標準コマンドのpwdコマンドを指定する例を次に示します。
adshscripttool -exec -m MINIMUM -r pwd
また,コマンドセパレータによる複数コマンド記述など,ジョブ定義スクリプトファイルに記述する内容を指定できます。コマンドラインに複数のコマンドを指定する例を次に示します。
adshscripttool -exec -m MINIMUM -r "export DATA=file01 ; pgm001"
コマンドラインにスペースを指定する場合,クォーテーション(「'」または「"」)で囲む必要があります。また,コマンドを実行するシェルによっては,コマンドラインに指定した$,*,;(セミコロン)などのメタキャラクタが展開されるため,クォーテーションで囲むか,エスケープ文字(\)を使用する必要があります。
- 子孫ジョブの出力情報
-
-rオプションを指定した場合,JP1/Advanced Shellが出力するメッセージテキストや,ジョブ定義スクリプトの稼働実績情報には,ジョブ定義スクリプトファイルのパス名として,ジョブ定義スクリプトファイルの絶対パスではなく「"-r CMDLINE"」が出力されます。
- 位置パラメーターの格納情報
-
-rオプションのコマンドラインに位置パラメーター$0を指定する場合,$0には「adshexec」が格納されます。
- SPOOLJOB_CHILDJOBパラメーターとの関連
-
-rオプションを指定して実行する場合,SPOOLJOB_CHILDJOBパラメーターにMERGEを指定して実行したときに,ルートジョブのジョブ実行ログに出力される子孫ジョブのジョブ実行ログの開始と終了を表す記号には,ジョブ定義スクリプトファイルの絶対パスではなく次の値が出力されます。SPOOLJOB_CHILDJOBパラメーターにMERGEを指定した時の出力形式は「3.5.1(3) 子孫ジョブのスプールジョブをルートジョブのスプールジョブへマージした場合」を参照してください。
-
子孫ジョブのJOBLOGの開始を表す記号
「>>>>>> [JOBLOG] "-r CMDLINE"」
-
子孫ジョブのJOBLOGの終了を表す記号
「<<<<<< [JOBLOG] "-r CMDLINE"」
-
子孫ジョブの標準エラー出力の開始を表す記号(通常実行時)
「>>>>>> [STDERR] "-r CMDLINE"」
-
子孫ジョブの標準エラー出力の終了を表す記号(通常実行時)
「<<<<<< [STDERR] "-r CMDLINE"」
-
子孫ジョブの標準エラー出力および標準出力の開始を表す記号(デバッグ実行時)
「>>>>>> [STDERR,STDOUT] "-r CMDLINE"」
-
子孫ジョブの標準エラー出力および標準出力の終了を表す記号(デバッグ実行時)
「<<<<<< [STDERR,STDOUT] "-r CMDLINE"」
また,スクリプトイメージファイルに出力されるジョブ定義スクリプトファイル名の部分にも「"-r CMDLINE"」が出力されます。
-
- ジョブ定義スクリプトファイルのパス名 〜<パス名>((1〜247バイト))
-
実行するジョブ定義スクリプトのファイルのパス名を指定します。-execオプションの指定時に指定できます。
- 実行時パラメーター 〜<任意文字列>((1〜1,022バイト))
-
-rオプションに指定したコマンドラインまたはジョブ定義スクリプトファイルの位置パラメーターに格納する値を指定します。-execオプションの指定時に指定できます。
スペースを実行時パラメーターとして指定する場合は,その文字列を"(ダブルクォーテーション)で囲んでください。
終了コード
終了コード |
意味 |
---|---|
0 |
正常終了 |
1 |
エラー終了 |
使用例
-
-fownerオプションの指定例と,標準出力への出力結果を示します。
ジョブ定義スクリプトの内容
adshscripttool -fowner test.txt
標準出力への出力結果
MYPC\user1
-
-fentryオプションの指定例と,標準出力への出力結果を示します。
ジョブ定義スクリプトの内容
adshscripttool -fentry test.txt
標準出力への出力結果
BUILTIN\Administrators;NT AUTHORITY\SYSTEM;MYPC\user1;BUILTIN\Users
-
-fmodeオプションに「+w」を指定した例と,標準出力への出力結果を示します。
ジョブ定義スクリプトの内容
adshscripttool -fmode +w
標準出力への出力結果
0A00A00A0
-
-fmodeオプションに「ug-r」を指定した例と,標準出力への出力結果を示します。
ジョブ定義スクリプトの内容
adshscripttool -fmode ug-r
標準出力への出力結果
D00D00000
-
-fmodeオプションに「ug-w,u+w」を指定した例と,標準出力への出力結果を示します。
ジョブ定義スクリプトの内容
adshscripttool -fmode ug-w,u+w
標準出力への出力結果
0A00D0000
-
-fmodeオプションに「655」を指定した例と,標準出力への出力結果を示します。
ジョブ定義スクリプトの内容
adshscripttool -fmode 655
標準出力への出力結果
RRDRDRRDR
-
-fmodeオプションの指定例と,標準出力への出力結果を示します。この例では-s w指定で「+w」を解析しています。
ジョブ定義スクリプトの内容
adshscripttool -fmode -s w +w
標準出力への出力結果(0A00A00A0の結果のうち,2桁目と5桁目と8桁目の結果を出力)
AAA
-
-fmodeオプションの指定例と,標準出力への出力結果を示します。この例では-s r指定で「655」を解析しています。
ジョブ定義スクリプトの内容
adshscripttool -fmode -s r 655
標準出力への出力結果(RRDRDRRDRの結果のうち,1桁目と4桁目と7桁目の結果を出力)
RRR
-
-fmodeオプションの指定例と,標準出力への出力結果を示します。この例では-s uor指定で「655」を解析しています。
ジョブ定義スクリプトの内容
adshscripttool -fmode -s uor 655
標準出力への出力結果(RRDRDRRDRの結果のうち,1桁目と7桁目の結果を出力)
RR
-
シンボルの解析結果に従ってcaclsコマンドの実行を切り替えるよう,ジョブ定義スクリプトで指定する例を次に示します。
username=`adshscripttool -fowner "$1"` # 所有者名を取得する if [[ $? -ge 1 ]] # adshscripttool -fownerのエラー処理 then echo "adshscripttool -fowner error." return 1 fi modebit=`adshscripttool -fmode $mode` # モードを解析する(mode=u+w) case $modebit in # modebitに0A0000000が格納されている "AA0000000" ) cacls "$1" /E /G $username:C ;; "0A0000000" ) cacls "$1" /E /G $username:W ;; # このcaclsが実行される "E" ) echo "adshscripttool -fmode error." # adshscripttool -fmodeのエラー処理 return 1 ;; esac
-
所有者とEveryone以外のACEを削除するよう,ジョブ定義スクリプトで指定する例を次に示します。
IFS=\; username=`adshscripttool -fowner "$1"` # 所有者名を取得する if [[ $? -ge 1 ]] # adshscripttool -fownerのエラー処理 then echo "adshscripttool -fowner error." return 1 fi set -A entry `adshscripttool -fentry $1` # アカウント名一覧を取得 for i in "${entry[@]}" do if ! [[ $i == "$username" || $i == "Everyone" ]] then cacls "$1" /E /R "$i" # 所有者とEveryone以外のACEを削除 fi done
-
数値の解析結果のうち,所有者の定義内容だけに従ってcaclsコマンドの実行を切り替えるよう,ジョブ定義スクリプトで指定する例を次に示します。
username=`adshscripttool -fowner "$1"` # 所有者名を取得する if [[ $? -ge 1 ]] # adshscripttool -fownerのエラー処理 then echo "adshscripttool -fowner error." return 1 fi modebit=`adshscripttool -fmode -s u $mode` # モードを解析する(mode=644) case $modebit in # modebitにRRD------が格納されている "RRR" ) cacls "$1" /P $username:F ;; "RRD" ) cacls "$1" /P $username:C ;; # このcaclsが実行される "RDD" ) cacls "$1" /P $username:R ;; "DRD" ) cacls "$1" /P $username:W ;; "E" ) echo "adshscripttool -fmode error." # adshscripttool -fmodeのエラー処理 return 1 ;; esac
-
コマンドライン「export DBPATH=C:\\HOME\\DBUSER; start -q」を子孫ジョブとして実行する例を示します。
adshscripttool -exec -m MINIMUM -r 'export DBPATH=C:\\HOME\\DBUSER; start -q '
-
ジョブ定義スクリプトファイル「ppstart.ash」を子孫ジョブとして実行する例を示します。
adshscripttool -exec -m MINIMUM ppstart.ash
注意事項
-
-fownerオプションと-fentryオプションを指定する場合は,対象のファイルまたはフォルダの所有者が実行してください。所有者でない場合,エラーメッセージを出力してエラー終了することがあります。
-
-fmodeオプションの前に-sオプションは指定できません。指定した場合,コマンドの解析エラーになります。
-
内部矛盾を検出した場合,実行しているシェルを終了します。内部矛盾以外のエラーの場合,実行しているシェルは終了しないで処理を続行します。
-
-fentryオプションで各ACEのセキュリティ情報を参照中にエラーになった場合,参照できたACEのアカウント名までの結果を出力し,エラー終了します。
-
-execオプションで子孫ジョブを実行した場合,ジョブ実行ログに出力されるコマンド名はJP1/Advanced Shellのコマンド(adshexecsubコマンド)となります。