VBSでシコシコと保守用のスクリプトを書いていたんだけど、世の中の流れはどうもWindows PowerShellっていうモノに流されたいらしい。PowerShellって何すか?っていうところから始めていきたいと思います。
TechNetのPowerShellのページを見ると
Microsoft Windows PowerShell は新しいコマンド ライン シェルであり、システム管理や自動化に役立つように設計されたスクリプト言語です。Windows PowerShell を使用すると、IT プロフェッショナルや開発者は Windows およびアプリケーションの管理を制御したり自動化したりできます。Windows PowerShell は Microsoft .NET Framework を基に設計されています。
なんて書いてあります。
.NET Frameworkが使えるコマンドプロンプトって感じですかね。でもなんだかよく分かりませんね。
■PowerShellをインストールしてみる
なんだかんだ言ったって、実際に使ってみるのが一番覚えますよね。ってことでさっそくインストールしてみる事にしました。
PowerShellは以下のサイトからダウンロード出来ます。
Windows XP Service Pack 2、Windows Server 2003 Service Pack 1用
まあ、インストールは特に問題無いと思います。ちなみに利用OSはWindows XP Service Pack 2です。
起動は
スタート→プログラム→Windows PowerShell 1.0→Windows PowerShell
もしくは
ファイル名を指定して実行→powershell
で起動します。
ただし、
スタート→プログラム→Windows PowerShell 1.0→Windows PowerShell
から起動するとちょっとだけ画面がカッコイイです。まあ関係無いですが。
起動するとこんな感じです。なんだかコマンドプロンプトと変わりありませんね。
■とりあえずPowerShellを使ってみる
とりあえずPowerShellを使ってみる事にしましょう。動作なんて使っていく間に覚えちゃえば良いですし。
□時刻を表示する
時刻を表示するためにコマンドを打ってみましょう。
Get-Date
日付の取得出来ましたか?PowerShellのコマンドは
動詞-名詞
で構成されます。例えば現在起動しているプロセスを取得する場合には
Get-Process
コンピュータのイベントログを取得するのだって簡単です。
Get-EventLog
で出来ちゃいます。ただしこの場合には
と表示されるはずです。EventLogの種類を指定していませんでしたからね。システムのログが取得したい場合には
system
と入力し、アプリケーションのログを取得するには
application
と入力します。
出したいログが元々決まっている場合は
Get-EventLog application
と続けて入力すれば良いわけです。また、WMIの値の取得も簡単に出来て、例えば
get-wmiobject win32_bios
と入力するとBIOS情報が取得出来ますし、
get-wmiobject Win32_Account
と入力すれば簡単にアカウント一覧の表示が出来ます。
□コマンド出力の書式設定
PowerShellは出力形式も以下のコマンドを使う事で簡単に変更が出来ます。
・Format-List
・Format-Custom
・Format-Table
・Format-Wide
例えば
get-wmiobject win32_bios
と、そのまま実行すると僕の環境だと
SMBIOSBIOSVersion : ASUS A8N-SLI Premium ACPI BIOS Revision XXXX
Manufacturer : Phoenix Technologies, LTD
Name : Phoenix - AwardBIOS v6.00PG
SerialNumber : System Serial Number
Version : Nvidia - XXXXXXXX
こんな感じで表示されるんですが、これに例えばFormat-Tableと追記する事で表示形式を
SMBIOSBIOSVersi Manufacturer Name SerialNumber Version
on
--------------- ------------ ---- ------------ -------
ASUS A8N-SLI... Phoenix Tech... Phoenix - Aw... System Seria... Nvidia - XXX...
こんな感じに変更する事が可能です。
Format-Tableを追加する場合にはパイプ「|」という文字を使いこんな感じに記述します。
get-wmiobject win32_bios | Format-Table
WMIの値について調べる場合には以下のサイトを参考にしてください。
■スクリプトを作成する
毎度毎度コマンドを実行する度にコマンドを手打ちするのは面倒ですよね。こんな場合にはPowerShell用のスクリプトを作成してしまいましょう。必要なのはメモ帳のみです。
※PowerShell実行ポリシーについて
PowerShell用スクリプトは既定では動作しません。スクリプトが動作するように変更するには以下のコマンドを入力します。
Set-ExecutionPolicy RemoteSigned
また、現在の実行ポリシーを確認する場合には以下のコマンドを使います。
Get-ExecutionPolicy
既定の設定だと実行ポリシーは一番厳しい”Restricted”に設定されていて、このままだと
個々のコマンドは許可されますが、スクリプトは実行できません。
というなんともセキュリティが高いというかなんというか・・・微妙な設定ですよね、スクリプトの実行が許可されていないのであればPowerShellなんて正直使う必要無いですからね。
少し話がずれてしまいましたが、適当なディレクトリにテキストファイルを作成し、拡張子を
txt
から
ps1
に変更します。VBSならダブルクリックするだけでWscriptが実行出来たんですがPowerShellはセキュリティの観点からダブルクリックじゃ実行しないようです。
PowerShellのスクリプトを実行するには
powershell C:\test.ps1
のように記述します。ただし、これだと実行完了後すぐに画面が閉じてしまいますので、処理をじっくり眺めたい場合には
powershell -noexit C:\test.ps1
と入力します。
とりあえず超簡単にPowerShellの解説をしてみたんですが分かりましたでしょうか?次回以降PowerShellを使って運用を楽にするスクリプトを記載していきたいと思います。
・・・まあ、その前に作らないといけないわけですけども。