LoginSignup
0
0

[ServiceNow] ScriptでUserの初期Passwordを一括設定して通知する

Last updated at Posted at 2023-10-28

はじめに

Scriptで、Userに初期パスワードを設定しつつ、そのパスワードを通知できるようにEventを生成する例を紹介します。

Script

あまり出来の良いScriptではありませんが、本質的な事を捉えます。

ここでは、

  1. abel.tuterに初期パスワード「ServiceNow123!」
  2. abraham.lincolnに初期パスワード「ServiceNow456!」

を設定しています。

ポイントは、passwardフィールドの設定にGlideRecordのsetDisplayValueメソッドを使用することです。
初期パスワードという想定なので、password_needs_resetフィールドはtrueに設定します。
最後にEvent Queにuser.initialpassword.setというEventを生成します。user.initialpassword.setは事前定義しておきます。ここでは、Eventの処理は割愛します。

Script
var arrUser = ["abel.tuter","abraham.lincoln"];
var arrPass = ["ServiceNow123!","ServiceNow456!"];

var grUser = new GlideRecord("sys_user");

for (var i = 0; i < arrUser.length; i++) {
    grUser.addQuery("user_name", arrUser[i]);
    grUser.query();
    if (grUser.next()){
        // Set an initial password to a user.
        grUser.user_password.setDisplayValue(arrPass[i]);
        grUser.password_needs_reset=true;
        grUser.setWorkflow(false);
        grUser.update();

        // Generate an event with the event registry "user.initialpassword.set".
        gs.eventQueue("user.initialpassword.set",grUser,grUser.email,arrPass[i]); 
    }
    grUser.initialize();
}

UserとPasswordの対を二次元配列にする手もあります。定義の例としては、次のようになります。

Script
var arr2UserPass = [
    ["abel.tuter","ServiceNow123!"],
    ["abraham.lincoln","ServiceNow456!"]
];

UserとPasswordの組み合わせは事前にExcel等で整備して、Scriptにハードコードするようになっていますが、PasswordをScriptでランダム生成するような関数を作っても良いかもしれません。その場合、ユーザーにどのようなパスワードを通知したか、ログを残す必要があるかもしれません。
また、そのログもそうですし、通知用に生成したEventには、パスワードが平文で記録されているので、セキュリティの観点から手当てが必要になるかもしれません。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0