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