はじめに
Scriptで、Userに初期パスワードを設定しつつ、そのパスワードを通知できるようにEventを生成する例を紹介します。
Script
あまり出来の良いScriptではありませんが、本質的な事を捉えます。
ここでは、
- abel.tuterに初期パスワード「ServiceNow123!」
- abraham.lincolnに初期パスワード「ServiceNow456!」
を設定しています。
ポイントは、passwardフィールドの設定にGlideRecordのsetDisplayValueメソッドを使用することです。
初期パスワードという想定なので、password_needs_resetフィールドはtrueに設定します。
最後にEvent Queにuser.initialpassword.setというEventを生成します。user.initialpassword.setは事前定義しておきます。ここでは、Eventの処理は割愛します。
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の対を二次元配列にする手もあります。定義の例としては、次のようになります。
var arr2UserPass = [
["abel.tuter","ServiceNow123!"],
["abraham.lincoln","ServiceNow456!"]
];
UserとPasswordの組み合わせは事前にExcel等で整備して、Scriptにハードコードするようになっていますが、PasswordをScriptでランダム生成するような関数を作っても良いかもしれません。その場合、ユーザーにどのようなパスワードを通知したか、ログを残す必要があるかもしれません。
また、そのログもそうですし、通知用に生成したEventには、パスワードが平文で記録されているので、セキュリティの観点から手当てが必要になるかもしれません。