Windows PowerShellでProject Euler(1) 準備

Windows PowerShellは従来のコマンドプロンプトの代替です。いろいろ便利になっていて、スクリプトもバッチファイルよりはかなりまともな言語になっているようです。例によってProject Eulerの問題を解きながらこの言語を学んでいきましょう。


まず、Windows 7のスタートメニューの検索ボックスで「power」とでも打てば上の方にWindows PowerShellが出てくるはずです。それをクリックすると、PowerShellが立ち上がります。
ずいぶん大きなウィンドウが出て来ましたね。小さくならないでしょうか。コマンドプロンプトと同じように左上をクリックするとメニューが出て来ます。そこからプロパティを選ぶとレイアウトなどが変えられます。しかし変更しようとすると、

ショートカットを変更できません

怒られてしまいました。ウィンドウサイズは変わるのですが、次に立ち上げたときまた同じ大きさに戻ってしまいます。「管理者として実行」しなければならないのですね。右クリックしてそのメニューを選んで再びウィンドウサイズを変えると、今度は怒られませんでした。立ち上げ直してもこのサイズです。

で、コマンドプロンプトと何が違うのかと言うと、例えばおなじみdirですが、打ってみるとだいぶ表示が違いますよね。それから、プロンプトでコマンドの補完が効くようになりました。このコマンドだとあまり意味がありませんが。また、lsと打っても同じ結果が得られます。エイリアスになっているんだったと思います。

help コマンド名 と打つとマニュアルが表示されます。これはmanでも同じです。manの方が打ちやすいですからね。man lsと打つと、

名前
    Get-ChildItem

  …

と表示されます。どうやらdirもlsもGet-ChildItemのエイリアスのようですね。プロンプトにget-chと打ってタブを打つとGet-ChildItemに補完されて、先ほどと同じ表示がされます。

それから、変わったのはプロンプトに例えば、

> 1 + 1

と打つと2と表示されるんですね。これは便利です。

リソース

Windows PowerShell

ここに日本語のドキュメントがあります。これで十分でしょう。

スクリプト

テキストファイルにコードを打ち込んで、拡張子.ps1で保存し実行します。例えば、

1 + 1

と打ち込んで、add.ps1とファイル名をつけましょう。そうして、プロンプトに

> add.ps1

とすると、

用語 'add.ps1' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください。
発生場所 行:1 文字:8

怒られましたね。カレントにパスが切ってないので./をつけなければならないようですね。

./add.ps1

と打つと、

スクリプトの実行がシステムで無効になっているため、ファイル F:\html\powershell\add.ps1 を読み込めません。詳細については
、「get-help about_signing」と入力してヘルプを参照してください。

また怒られましたね。こう打つとスクリプトが動かせるようになるようです。

> Set-ExecutionPolicy remotesigned
Set-ExecutionPolicy : レジストリ キー 'xxx' へのアクセスが拒否されました。

また怒られました。これも管理者として実行ですね。これで管理者でなくてもスクリプトが動かせるようになりました。

> ./add.ps1
2