スクリプトは、デバイス上で任意の処理を実行する機能です。定型作業の自動化、標準機能では取得できない情報の収集、独自の判定条件の作成に使います。最も自由度が高く、最も影響が大きい機能でもあります。
スクリプトの用途
実務での使い道は大きく4つに分かれます。
| 用途 | 例 |
|---|---|
| 定型作業の自動化 | 一時ファイルの削除、ログの収集、設定の適用 |
| 情報の収集 | 標準では取得できない項目を調べてCustom Fieldsに記録する |
| 自動対応 | Conditionが成立したときの復旧処理 |
| 一括操作 | 多数のデバイスへ同じ変更を適用する |
2番目と3番目が、NinjaOneの運用を大きく変える使い方です。標準の監視項目では足りない部分を補い、検知から対応までを人手を介さずにつなげられます。
実行の仕組みと権限
スクリプトはAgentが実行します。実行するアカウントはRun asで指定でき、初期値はSystemです。
| 実行アカウント | 特徴 |
|---|---|
| システム | 利用者が不在でも実行できる。権限が強い |
| ログイン中の利用者 | 利用者の環境で実行される。権限は利用者に依存する |
多くの処理はシステム権限で実行します。ただし、利用者のプロファイルに依存する処理は、ログイン中の利用者として実行する必要があります。
【注意】 手動で実行すると動くのに、Scheduled Automationsでは動かない、という事象の多くはこの実行アカウントの違いが原因です。自動実行を設定したら、必ず実際に自動実行されたときの結果を確認してください。
対応する言語
言語はスクリプトの作成時に選択します。Windowsではコマンドプロンプト系とPowerShell系、macOSとLinuxではシェルスクリプトが基本になります。
Operating SystemとArchitectureもあわせて指定します。この指定が実行対象の判定に使われるため、正しく設定してください。対応する言語の詳細な一覧は公式ドキュメントで確認できます。
実行時間の上限
スクリプトには実行時間の上限があります。長時間かかる処理は途中で打ち切られます。
対処としては次の方法があります。
- 処理を分割して複数のスクリプトにする
- 時間のかかる処理は非同期で起動し、結果は別途確認する
- 対象を絞って実行回数を増やす
大量のファイルを操作する処理や、ネットワーク越しの処理は時間がかかりやすいため注意してください。
安全に運用するための原則
スクリプトの実行は、デバイス上で任意のコマンドを実行することと同じです。次の原則を守ってください。
- 実行前に必ず検証する
検証機で動作を確認してから本番に適用します。手動実行、少数への自動実行、全体への展開、という順で広げてください。
- 対象を確認してから実行する
一括実行の前に、選択されている台数と内訳を確認します。フィルターの条件を間違えたまま実行すると、意図しないデバイスに影響します。
- 実行権限を絞る
スクリプトの実行権限は、リモート接続の権限より影響が大きい権限です。付与する範囲を限定してください。設計は権限設計の考え方を参照してください。
- 取り消せない処理は特に慎重に
ファイルの削除、レジストリーの変更、サービスの無効化などは、実行後に元に戻せません。事前に確認する処理を入れる、対象を明示的に限定する、といった防御を組み込んでください。
- 結果を確認する
実行して終わりにせず、成功したか失敗したかを確認します。失敗が続いているスクリプトを放置すると、動いているつもりで動いていない状態になります。
【運用のポイント】 破壊的な処理を含むスクリプトには、名前に印を付けることをおすすめします。一覧で見たときに、慎重に扱うべきものが判別できます。