Windows PowerShellを使ってみる

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用

Windows Vista用

001.png
まあ、インストールは特に問題無いと思います。ちなみに利用OSはWindows XP Service Pack 2です。

起動は

002.png

スタート→プログラム→Windows PowerShell 1.0→Windows PowerShell

もしくは

003.png

ファイル名を指定して実行→powershell

で起動します。

ただし、

スタート→プログラム→Windows PowerShell 1.0→Windows PowerShell

から起動するとちょっとだけ画面がカッコイイです。まあ関係無いですが。

004.png
起動するとこんな感じです。なんだかコマンドプロンプトと変わりありませんね。

■とりあえずPowerShellを使ってみる
とりあえずPowerShellを使ってみる事にしましょう。動作なんて使っていく間に覚えちゃえば良いですし。

□時刻を表示する
時刻を表示するためにコマンドを打ってみましょう。

Get-Date

日付の取得出来ましたか?PowerShellのコマンドは

動詞-名詞

で構成されます。例えば現在起動しているプロセスを取得する場合には

Get-Process

コンピュータのイベントログを取得するのだって簡単です。

Get-EventLog

で出来ちゃいます。ただしこの場合には

と表示されるはずです。EventLogの種類を指定していませんでしたからね。システムのログが取得したい場合には

system

と入力し、アプリケーションのログを取得するには

application

と入力します。

出したいログが元々決まっている場合は

Get-EventLog application

と続けて入力すれば良いわけです。また、WMIの値の取得も簡単に出来て、例えば

get-wmiobject win32_bios

と入力するとBIOS情報が取得出来ますし、

005.png

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の値について調べる場合には以下のサイトを参考にしてください。

WMI Reference

■スクリプトを作成する
毎度毎度コマンドを実行する度にコマンドを手打ちするのは面倒ですよね。こんな場合には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を使って運用を楽にするスクリプトを記載していきたいと思います。

・・・まあ、その前に作らないといけないわけですけども。

コメントを残す

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