Windows PowerShell は、Windowsの次世代コマンドラインです。
コマンドプロンプトではできなかったあんなことやこんなことがコマンドラインでできるようになります。
参考
GUIユーザーのためのPowerShell入門 | コラム | エンタープライズ | マイナビニュース
特徴
- オブジェクト指向
- いまどきの制御構造が使える
- .NET Frameworkの全機能が使える
起動方法
A. 「ファイル名を指定して実行」で「powershell」と入力してEnter
「ファイル名を指定して実行」ダイアログは、「Windowsキー + r」同時押しで出てきます。
B. エクスプローラーのアドレスバーに「powershell」と入力してEnter
エクスプローラーで開いている場所がカレントディレクトリになります。
基本コマンド
Windowsは大文字小文字を区別しないので、全て小文字でもOKです。
イベントログの一覧を表示
> Get-EventLog -List
Get-EventLogのヘルプを表示
> Get-Help Get-EventLog
イベントログ(Systemログ)を表示
※すごいでるので、満足したら「Ctrlキー + c」同時押しで終了させる。
> Get-EventLog System
最新のイベントログ5件を表示
> Get-EventLog System -Newest 5
Errorログを抽出(grep)
PowerShellにもgrep用コマンドはありますが、
慣れ親しんだコマンドプロンプトのコマンドも使えます。
> Get-EventLog System -Newest 500 | findstr "Error"
日時を表示
> Get-Date
一日前の日時を表示
> (Get-Date).AddDays(-1)
一日と一時間前の日時を表示
> (Get-Date).AddDays(-1).AddHours(-1)
一日と一時間前以降のイベントログを表示
> Get-EventLog System -After (Get-Date).AddDays(-1).AddHours(-1)
好きな日時を表示
> New-Object System.DateTime 2013,11,29,11,29,29,29
変数に格納
> $fav_date = New-Object System.DateTime 2013,11,29,11,29,29,29
変数の値を表示
> echo $fav_date
または
> $fav_date
1から10まで表示
比較演算子はUnixシェルと似ています。
> for ($i = 1; $i -le 10; $i++) {
> echo $i
> }
> # いっこ余計にEnterで実行
応用
日付毎に最後のイベントログを表示
> for ($day = 1; $day -le 30; $day++) {
> $start_time = New-Object System.DateTime 2013,6,$day,0,0,0,0
> $end_time = New-Object System.DateTime 2013,6,$day,23,59,59,999
> Get-EventLog System -After $start_time -Before $end_time -Newest 1
> }
>
スクリプトに書いて実行することもできますが、権限を変更する必要があります。
アプリケーションとサービスログを表示
印刷ログを表示するコマンド
> Get-WinEvent -ProviderName "Microsoft-Windows-PrintService"