2013年12月28日土曜日

東芝dynabook tab VT484で、コマンド(WindowsPowerShell)を使って楽しむ

dynabook tab VT484の多機能さと便利さは筆舌に尽くしがたいものがありますが、Windows 8.1タブレット由来の強みの一つにコマンドモード、正確にはWindowsPowerShellがあります。

Windowsにはまだ旧式のコマンドモードと、PowerShellが混在しているのですが、当記事ではコマンドモード=WindowsPowerShellとしております。

なお、今回の記事では、コマンドモードの活用というより準備編という内容になっている事をお許し下さい。



■画面を調節する!!

全てのWindows(7以降)には必ずWindowsPowerShell(ウィンドウズ・パワーシェル)というコマンドモードが備わっていますが、これがとんでもなく高機能で、もしかするとWindows OSを積極的に選びたくなる理由の一つになりさえすると思います。

それを手のひらモバイルで使える時代になったわけで、これは楽しまなくては損かもっ、というわけです。

掲載のスクリーンショットは、今の私のdynabook tab VT484のホーム画面(スタート画面)ですが、ここからすぐにWindowsPowerShell(以降PowerShell)を起動出来るようにしています。

起動時は、長タップで出てくるアプリメニューから「管理者として起動」します。


起動すると、いかにもコンピュータ!!という画面が出てきますが、東芝dynabook tab VT484の縦画面だとさすがにうまく合っていない。

というわけで、プロパティから画面を変更し、フォント=MSゴシック20ポイントの、幅=文字数75文字にしてみます。

こうすると、1280x800ドットの縦画面にもちょうど良いかな。

あと気になるのは、コマンド入力を促す部分の表示コマンドプロンプトが異様に長い!!って事ですね。

このプロンプト、自分の居るフォルダを最上層からフルで表示しているのが長い原因なので、最後のフォルダだけ表示するようにします。

FUNCTION PROMPT(){$(SPLIT-PATH $(GET-LOCATION).PATH -LEAF) + ">";}

というコマンドを入力するとOKです。

GET-LOCATIONは、自分が現在居るフォルダを返してくるコマンドで、そこから最後のフォルダ名だけを取得するのに使うのがSPLIT-PATHコマンド(-LEAFオプション)です。

これだけでも、PowerShellの大きな特長の一つであるコマンドの結果がテキストじゃなくてオブジェクトで返ってくる事の恩恵に浴しているのが分かると思います。



■起動時に自動でコマンドを実行したい!!

しかし毎回こんな長いコマンド入力するのはキツイという当たり前の悩みが出てきますので、PowerShellを起動したら、自動で登録出来るように自動実行ファイル(プロファイル)に登録してしまいたいと思います。

ところが、Windows 8.1だと自動実行ファイルは禁止されているため以下のコマンドでローカルだけ許可してしまいます。
SET-EXECUTIONPOLICY -EXECUTIONPOLICY REMOTESIGNED

例によって、そんな事するとセキュリティやばいぞ!!と警告が来ますが、何言われても「Y」イエス選ばないとしゃあないのが辛いところ。


自動実行ファイル(プロファイル)はどこに作ればいいんだ?!と思ってしまいますが、なんと、妙に親切というか
$PROFILE
と入力すると、具体的な場所とファイル名がフルで表示されます。

ここでのポイントは場所(フォルダ)もファイルも全く存在しないので全部自分で作るという事です。


場所もファイル名も指示されて分かっているので、まずフォルダとテキストファイルの空枠だけ作ってしまいます。

私の場合はユーザー名がmorimoriなので、以下のようになりますね。
C:\Users\morimori\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

ついでと言ってはなんですが、今後、コマンドモードを便利に使うため、自作関数(コマンド)を登録しておくINIT.PS1というファイルも合わせて作っておきました。

名前はもちろん何でも良いです。


自動実行ファイル(起動プロファイル)には
#---------------------------------------------------------
#東芝dynabook tab VT484 WindowsPowerShell起動プロファイル
#---------------------------------------------------------

#起動時の場所
SET-LOCATION C:\

#パスの追加
$ENV:PATH += ";C:\USERS\MORIMORI\DOCUMENTS\WINDOWSPOWERSHELL\"

#起動時に自作関数を登録する
INIT.PS1

#コマンドプロンプトをシンプルにする
FUNCTION GLOBAL:PROMPT()
{
   $(SPLIT-PATH $(GET-LOCATION).PATH -LEAF) + ">";
}
という感じで必要最低限の設定が自動でなされるようにしてみました。

#以降は改行するまでコメントが書けます。


自作関数のINIT.PS1には、今後色々と入れたいのですが、まず手始めに、正規表現のパターンにマッチする(1)か、しないか(0)をチェック出来る関数を一つ作ってみました。

#正規表現実行
FUNCTION GLOBAL:REGEX($P_VALUE="",$P_PAT="")
{
    if($P_VALUE.Equals("") -and $P_PAT.Equals(""))
    {
       WRITE-OUTPUT "REGEX 文字列 パターン";
       return;
    }
    
    $oRX = $(NEW-OBJECT Regex($P_PAT));
    if($oRX.IsMatch($P_VALUE))
    {
        return 1;
    }
    else
    {
        return 0;
    }  
}

■いよいよコマンド・ライフ!!

遅くなってしまってすみません。

ようやくコマンドモードを使う段になりました。

PowerShellは、昔のコマンドモードと違って、すぐに、数式を入力する電卓としても使用可能です。

難しい事一切抜きで、そのまま数式を入力するだけでOK。

これが結構便利だったりします。

ちなみに、$変数名=値とすれば、いくらでも変数が使えるので電卓役としても剛力なものがあります。


さきほどINIT.PS1に作ったREGEXという関数ですが、文字列とパターンの2つをパラメータとして与えて(パラメータの間はカンマではなくて空白で指定するのにご留意下さい)、パターンが一致しているかどうかを0か1で分かるようにしていますが、その使用シーンをスクリーンショットで掲載させて頂きました。

このように、アプリを開発するまででもないけど、すぐにツールが欲しいというような時、コマンドモードならすぐにパッと作れてしまうのも非常に大きいです。

しかも、手のひらで作れてしまう。

このあたりの話になってくると、Windows 8.1のモバイルいいなぁという思いがさらに強まりますねー。