この記事ではスクリプト作成機能でのKスクリプトの作成・編集について説明します。
Kスクリプトには次の構成要素があります。
項目 | 値の例 | 説明 |
---|---|---|
名前(必須) | Mykbot-Script | このスクリプトにつける名前です。 |
有効 | (チェックボックス) | 割り当てたデバイスに対してスケジュール(オプション)による実行を設定します。デバイスにたいして「今すぐ実行」を行う場合、このフラグの設定は不要です。 |
タイプ | オンラインKScript オフラインKscript オンラインシェルスクリプト | 構成するKスクリプトのタイプを指定します。 |
説明 | スクリプトにつける説明(一覧に表示されます) | |
メモ | メモ | |
カテゴリ(必須) | "なし" | グループ分けするための名前です(v10.0以上) |
項目 | 値 | 説明 |
---|---|---|
全デバイス | チェックボックス | すべてのデバイスを対象とするかどうか |
デバイス | 選択したデバイス | デバイスを選択して指定します。 |
オペレーティングシステム |
Microsoft Windows Mac OS X Linux 特定のオペレーティングシステムの選択(チェックボックス) |
実行対象のOSの範囲を指定します。 「特定のオペレーティングシステムの選択」を有効にすると、インベントリ報告されたOS種類から選択できるようになります。 |
ラベル | 0個以上のデバイスラベル | デバイスを示すラベルを指定することでラベルの対象をスクリプトの実行対象になります。 |
項目 | 値 | 説明 |
---|---|---|
- |
1つ選択 ・ローカルシステム |
スクリプトを実行するユーザーの権限を設定します。 この項目は以下の場合のみ表示されます。 スクリプトタイプが{オンラインKScript または オンラインシェルスクリプト} かつ オペレーティングシステム選択 が Microsoft Windows (および各Windowsシリーズ)のみの場合 |
Kスクリプトは基本的には Windowsでは ローカルシステム(SYSTEM)、Linux/Mac では root のプロセスとして動作します。 |
項目 | 値 | 説明 |
---|---|---|
実行前にユーザーに通知 | チェックボックス | デスクトップのポップアップを表示させるかどうかの設定 |
オプション |
チェックが有効の場合以下から選択可能 OK/再通知 | |
タイムアウト | 分 | 通知を待つ時間 |
再通知間隔 | 分 | 再通知するまでの間隔 |
初期メッセージ |
実際のタスク実行前にユーザーデスクトップにポップアップさせるメッセージ |
項目 | 値 | 説明 |
---|---|---|
なし~カスタム |
・なし ・毎[分|時] ・毎[日|曜]、時間: HH:MM ・カスタム(Cron形式) |
通常の実行タイミングの指定 |
ログインしているユーザーがいなくても実行を許可 | チェックボックス | 無効の場合、ログオンユーザーがいないとスクリプトは実行されません。有効の場合、ログオンユーザーがいないときにもスクリプトは実行されます。 |
オフラインの場合は次の接続時に実行(オンラインKスクリプトのみ) | チェックボックス | 無効の場合、実行時にオフラインであれば次回スケジュール時に実行します。 有効の場合、実行時にオフラインであれば次回接続時に実行します。 |
[以下はオフラインKスクリプトのみ設定可能] | オフライン K スクリプト専用 | |
次のデバイスチェックインでも1回実行 | チェックボックス | 有効の場合、デバイスチェックイン時にも実行します |
ログイン前にも実行 | チェックボックス | 有効の場合、PC起動時ログオンプロンプトが表示される前に実行されます。 |
ログイン後(デスクトップ読み込み前)にも実行 | チェックボックス | 有効の場合、ログオン処理の後に実行されます。 |
切断されている間の実行を許可 | チェックボックス | サーバーとの接続がされていないときでも、設定に従ってこのスクリプトを実行することを許可します。 |
Kスクリプトで使用するためのファイルを登録する場所です。
このファイルはエージェントでの実行時には トークン置換変数 の1つである$(KACE_DEPENDENCY_DIR) に配置されます。
トークン置換変数については スクリプト詳細画面の タスクセクションの [?] をクリックすることで確認できます。
スクリプトは1つ以上のタスクを持たなければなりません。1つのタスクは、"検証"、"成功時"、"修復"、"修復の成功時"、"修復の失敗時" それぞれのセクションを持ちます。
1スクリプトに複数のタスクを持たせることも可能です。
各セクションには「ステップ」を追加できます。ステップに実施させたいコマンドや処理を指定します。
項目 | 値 | 説明 |
---|---|---|
試行回数 | 数 | このタスクが"成功時"セクションに行かなかった場合に行うタスクの再試行の回数 |
失敗時 | 中止 | 続行 |
このタスクが"成功時"セクションで終了しなかった場合に、後続のタスクを実行するかどうかを指定します。 中止:後続のタスクに進みません。 続行:後続のタスクに進みます。 "成功時"に進んだ場合、ステップがNon-Zeroで終了するものがあっても、後続のタスクに進みます |
検証(VERIFY) | 0個以上のステップ |
判定に使用するステップを複数記述できます。 すべて成功すれば、"成功時"セクションへ、1つでも失敗したら、"修復"セクションに進む想定でステップを登録します。 ステップを何も追加しなければ、成功時セクションに移動します。 ステップの失敗が発生した場合には後続のステップの実行は行いません。 |
成功時(ON VERIFY SUCCESS) | 0個以上のステップ |
検証が成功した場合の処理を登録します。 ステップの失敗が発生した場合には後続のステップの実行は行いません。後続のタスクを開始します。 |
修復(ON VERIFY FAILURE) | 0個以上のステップ |
すべてのステップが成功すれば、"修復の成功時"セクションへ、1つでも失敗したら"修復の失敗時"セクションに進む想定でステップを登録します。 ステップの失敗が発生した場合には後続のステップの実行は行いません。 |
修復の成功時(ON REMEDIATION SUCCESS) | 0個以上のステップ |
修復セクションのステップが(すべて)成功した場合の処理を登録します。 ステップの失敗が発生した場合には後続のステップの実行は行いません。 |
修復の失敗時 (ON REMEDIATION FAILURE) | 0個以上のステップ |
修復セクションのステップが(1つでも)失敗した場合の処理を登録します。 ステップの失敗が発生した場合には後続のステップの実行は行いません。 |
■ 実行ユーザーについて
WindowsデバイスでKScriptを実行して出力したファイルを社内のファイルサーバー共有フォルダに書き込もうとして失敗することがあります。
スクリプトログに 'アクセスが拒否されました。' というエラーが発生します。 KスクリプトはSYSTEMユーザーで実行されているため、ファイル共有への十分なアクセス権限がないことが考えられます。
また スクリプト内でファイル共有からローカルシステムアカウントでアクセスしていることにより、ファイルの取得・読み出しで失敗することもあります。
これらの対処については一定の方法はございません。 ファイル共有側の書き込み許可の設定、 クライアンドデバイスのドメインメンバーへの参加が必要な場合があります。
Kscriptの実行ユーザーについて (4257416)
1つのKスクリプトにタスクを複数登録しておくと、タスク1のあとでタスク2の処理に進ませることができます。
タスク1の失敗時の設定が 中止 となっている場合、タスク1の[検証セクション] での評価結果が["成功時"セクション]に進まなかった場合には、タスク2が実行されません。
2以上の値を設定しておくと、そのタスクの["検証"セクション] での評価結果が ["成功時"セクション] に進まなかった場合に、指定した回数分、そのタスクの先頭(検証)から実行されます。
これにより、初回の検証にて成功時セクションに移動できなかった場合に修復セクションに誘導し、修復が成功した場合に最初にしたかった操作を1回のスクリプト実行内で行うことができます。
ただし、活用するためには発生し得るシナリオと対処を明確に出来る必要があります。
各セクションで使用できるステップについては オンラインヘルプ あるいは 管理者ガイド「付録 スクリプトのタスクセクションへの手順の追加」を参照してください。
プラットフォームの選択状態により、選択可能なステップなどが異なります。
"検証"、"成功時"、"修復"、"修復の成功時"、"修復の失敗時"、いずれのセクションにおいても ステップを複数記述できます。
スクリプトは上から実行され、そのうち1つでも失敗判定(コマンドならNon-Zeroの終了コード)を返したら同セクション内のステップは実行されず、次のフロー(セクションやタスクあるいは終了)に移ります。
以下のようなスクリプトのタスクでは最初にC:\MyDirが存在していたとしても File1.txtを作成することは可能ですが、ステップS1 が失敗するとそれ以降は実行されないため、File2.txt を作成する処理は常に行われません。
例:
[検証セクション]
ステップV1: ディレクトリ C:\MyDir が存在する
[成功時セクション]
ステップS1: {ファイル C:\MyDir\File1.txtを作成する処理}
ステップS2: {何か失敗する処理}→ここで終わり
ステップS3: {ファイル C:\MyDir\File2txtを作成する}
ステップR1: ディレクトリ C:\MyDir を作成する
-- 終了 --
タスクとステップの移動についてまとめた図を以下に示します。
最後に実行されたタスクのセクション とその最後のステップの結果によってスクリプトのステータスが異なります。 セクションとステップ実行結果の戻り値に応じて以下のようになります。
注意: これらの 1,2,3,4のステータスはKスクリプトのステータスでありコマンドの戻り値そのものではありません。
よく似ていますがスクリプトのステータスとは異なるものです。指定したBatや呼び出したコマンドの戻り値を表すのはこの値です。
ステップ 「プログラムを起動します...」 は [完了を待機]オプションを持っています。これが無効の場合、指定されたプログラム(コマンド)を開始できた時点で0を返します。後続のステップがプログラムの結果を待つ必要がある場合には [完了を待機]オプションを有効にしてください。
タスクステップの設定とスクリプトログの結果の例をいくつか示します。
スクリプトステータス3の例(指定したプログラムが無い)
成功時セクションにて、ステップでは存在しないファイルを指定して実行しようとしたためにError Codeに2が返っています。結果としてスクリプトのステータスは3となりました。
スクリプトステータス3の例(指定したプログラムがnon-zeroを戻した)
実行可能なファイルを呼び出しているためError Codeは0です。しかしそのコマンドの戻り値がNonZero(この例ではStatus Code: 334)であるため、成功時セクションとしては失敗してスクリプトのステータスが3となります。
ここで「完了を待機」を無効にしている場合、実行可能なファイルを呼び出しに成功した時点でStatus CodeがNon-Zeroかどうかは評価しないためスクリプトのステータスは1になります。(成功と判定)
スクリプトステータス1(成功時セクションでステップも成功)の例
成功時セクションですべてのステップが成功していればスクリプトのステータスは1になります。
同じ操作を何度繰り返しても結果が変わらない性質を冪等(べきとう, idempotent )と呼びます。
例えば、あるファイルに特定の文字列を1行だけ追記された状態にしたい場合に、文字列を追記するコマンドだけで行うとそれを2回実行すれば2個追加されてしまうため、2回目以降の試行ではおなじ結果が得られません。
そこで最初にファイル内の文字列を調べて、目的の文字列が見つかれば追記コマンドを実行しない、なければ実行する という仕組みにしておけば コマンドを何度実行してもおなじ結果を得られることが期待できます。
一度におなじ操作が可能かどうか保証できない多数のデバイスを扱う環境では1つのスケジュール実行を1台ずつ分けて用意することは現実的ではないため、一斉に何かを展開する際にあらかじめ実行条件・終了条件を含めておくことは重要です。
Kスクリプトでは検証セクションを使用することで、確認と実行の処理を分離して記述することができ、そのデバイス上で変更を伴う操作を実際に行うかどうか判断させ、不要な処理を二重実行する懸念を減らすことができます。
今すぐ実行は メニューにより実行を受ける対象が異なります。
・ スクリプト作成 | スクリプト |スクリプト詳細 の 今すぐ実行ボタン
展開 にセットされているラベル・デバイスに対して実行されます。
・ スクリプト作成 | 今すぐ実行 | スクリプト選択 の 今すぐ実行ボタン
この画面内で選択したラベル・デバイスへ実行されます。スクリプト詳細 の 展開にセットしているラベル・デバイスは無視されます。
Kスクリプトのステータスが 有効 に設定されている必要があります。実行日時(周期)を指定するだけでは実行されません。
一度も 今すぐ実行 を行わないオフラインKスクリプトがデバイス側に反映されるには スクリプト更新 の周期を待つ必要があります。
© ALL RIGHTS RESERVED. 利用規約 プライバシー Cookie Preference Center