JavaScriptでオフィス365に自動ログイン
JavaScriptでオフィス365に自動ログインできないか試してみた。
結果は、少々不安定だが自動ログインできるようになった
とりあえず、ソースをメモっておきます
// IE起動
var ie = WScript.CreateObject("InternetExplorer.Application")
ie.Navigate( "https://login.microsoftonline.com/" );
ie.Visible = true;
waitIE( ie );
// ID,passwordを入力
ie.document.getElementById("cred_userid_inputtext").value = "********@********.onmicrosoft.com";
ie.document.getElementById("cred_password_inputtext").value = "********";
ie.document.getElementById("cred_keep_me_signed_in_checkbox").checked = true;
WScript.Sleep( 100 );
// FireEvent -> OK
var elem=ie.document.getElementById("cred_sign_in_button");
elem.fireEvent( "onclick" );
// サインイン ボタンクリック -> NG
// var elem=ie.document.getElementById("cred_sign_in_button");
// elem.click;
// フォームをサブミット -> NG
// ie.document.getElementsByTagName("form").item(0).submit()
// パスワードのテキストエリアを選択してENTER -> NG
// var elem=ie.document.getElementById("cred_password_inputtext");
// var range = elem.createTextRange();
// range.move('character', elem.value.length);
// range.select();
// var objShell = WScript.CreateObject("WScript.Shell");
// objShell.Sendkeys("{ENTER}");
waitIE( ie );
WScript.Echo("スクリプト終了");
// IEがビジー状態の間待ちます
function waitIE( ie )
{
while( ( ie.Busy ) || ( ie.readystate != 4 ) )
{
WScript.Sleep( 100 );
}
}
PowerShellで同じ処理を書いたが失敗
なかなか、しぶといです。
$ie = new-object -com InternetExplorer.Application
$ie.visible=$true
$ie.navigate("https://login.microsoftonline.com/")
# 読み終わるまで待ち続ける
While($ie.Busy)
{
Start-Sleep -milliseconds 100
}
$doc = $ie.document
$txt_username = $doc.getElementByID("cred_userid_inputtext")
$txt_username.value = "********@********.onmicrosoft.com"
$txt_passwd = $doc.getElementByID("cred_password_inputtext")
$txt_passwd.value = "********"
$btn = $doc.getElementByID("cred_sign_in_button")
$btn.fireEvent( "onclick" )