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" )

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です