bat

PowerShellでキーボード入力を自動化する方法

『キーボードの入力を自動化したい』
そんなこと考えたりしませんか?

 
例えば、毎日のルーティンワーク。
ブラウザを起動して、
Webアプリにログインして、
エクスプローラーを開いて、
工程表を開いて、
開発用IDEを開いて。。。

これらはすべてPowerShellやbatでできますので、スタートアップにショートカットを登録しておくことで実現できます。

 
今回説明するのは、アプリへのログインの部分。ユーザーとパスワードの入力を自動化し、スクリプトにやらせようという企画。


自動キー入力の書き方

今回は下記のようなWindowがあったとします。
(Webアプリでもデスクトップアプリでも構いません)
自動キー入力確認フォーム

上記のフォームに対して「USER ID」と「PASSWORD」を入力し、ログインボタンをクリックする。というスクリプトを作成します。
(セキュリティ的にどうなの?という話は置いておいて)

 
早速サンプルコード。


#SendKeysを使うため、System.Windows.Forms名前空間読込
Add-Type -AssemblyName System.Windows.Forms
Start-Sleep -m 500

#[Alt] + [TAB]で前回表示Windowに切替
[System.Windows.Forms.SendKeys]::SendWait("%{TAB}")
Start-Sleep -m 500

#USERID入力
[System.Windows.Forms.SendKeys]::SendWait("administrator")

#PASSWORD入力
[System.Windows.Forms.SendKeys]::SendWait("{TAB}")
[System.Windows.Forms.SendKeys]::SendWait("password")

#ログイン実行
#Enterでログインできる場合
#[System.Windows.Forms.SendKeys]::SendWait("{ENTER}")

#Enterでログインできない場合はTABで移動して実行
[System.Windows.Forms.SendKeys]::SendWait("{TAB}")
[System.Windows.Forms.SendKeys]::SendWait("{ENTER}")

Windows PowerShell ISE上で実行する場合は、先頭の「Add-Type -AssemblyName System.Windows.Forms」は不要ですが、PowerShell単体で実行する場合は必要になります。
Add-Typeを書かないで実行すると。。。

発生場所 C:\Users\XXXXX\Desktop\test-login.ps1:7 文字:1
+ [System.Windows.Forms.SendKeys]::SendWait("%{TAB}")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidOperation: (System.Windows.Forms.SendKeys:TypeName) []、RuntimeException
+ FullyQualifiedErrorId : TypeNotFound

上記のエラーとなります。名前空間が読み込めていないようですね。
基本的にアクティブなウィンドウに対してキー入力を行いますが、注意点があります。UAC有効時、「管理者として実行」などを行い、異なる権限で実行しているアプリケーションに対してはキー送信できません。

 
参考までに、他の特殊キーに対応するコードを載せておきます。

キー コード
Shift +
Ctrl ^
Alt %
Windows ^{ESC}
※Ctrl + Esc

作成したPowerShellを実行する

PowerShellはデフォルトの関連付けがメモ帳となっているため、ファイルをダブルクリックしてもメモ帳が起動するだけです。右クリックから「PowerShellで実行」を選べば実行できますが、これでは不便です。

解決策として、
①PowerShellスクリプト(.ps1)のショートカットを作成
.ps1のショートカットを作成

②ショートカットのプロパティ>ショートカット を開きます。
ショートカットタブを開く

③リンク先 の先頭に「powershell 」を追加してOK。
「powershll 」を追加

④上で作成したショートカットがPowerShellとして認識されます。
PowerShellとして認識される

これでショートカットの方をダブルクリックや「スタートアップに突っ込む」で実行できます。


実行結果

上記サンプルコードとショートカットの作成で、ダブルクリックで実行できるようになりました。

早速実行してみると。。。
自動キー入力成功

無事に「USER ID」「PASSWORD」が入力され、ログインボタンが押せました。

 

 

これを応用すれば、ルーティンワークの自動化はもちろん。アプリのロングラン試験などにも使えます。

おしまい。

コメントを残す

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