HIRO posted on 10月 7, 2008 23:15

今日はInvoke-Historyコマンドレットについてまとめてみました。

コマンドレット名
Invoke-History

エイリアス
ihy
r

説明
コマンド実行履歴からコマンドを実行します。Get-History コマンドレットを使用して取得したコマンドを Invoke-History に渡すか、コマンド実行履歴のIDを指定して実行を行います。

下記のように、パラメータなしで Invoke-History コマンドレットを実行すると、最新のコマンドを実行します。

PS > Invoke-History

書式
Invoke-History [[-iD] <string>] [-whatIf] [-confirm] [<CommonParameters>]

パラメータ
-iD <string>
履歴内のコマンドを実行します。履歴のIDを指定するか、コマンドの先頭文字をいくつか指定します。
文字を入力した場合は、最新の履歴から一致するものを探して実行します。
ID番号を指定する場合、Get-History コマンドレットで確認することができます。

–––––––––– -iD パラメータの使用例1 ––––––––––

PS > Invoke-History -id 1

このコマンドを実行すると、Get-History コマンドレットで確認可能な履歴のIDが1のコマンドを実行します。

–––––––––– -iD パラメータの使用例2 ––––––––––

PS > Get–History

  Id CommandLine
  – –––––––––––
   1 Get–Help Invoke–History –Detailed
   2 Get–History
   3 Get–Help Invoke–History –Detailed
   4 Get–Help Invoke–History –Detailed
   5 cls
   6 Get–History
   7 Get–ChildItem
   8 Dir
   9 Get–Content C:\Work\Test.txt

PS > Invoke–History –iD cl

はじめに Get-History コマンドレットで現時点までの履歴を確認しています。
次に、Invoke-History コマンドレットで-iD パラメータに文字 "cl"を指定すると、IDが5のコマンド "cls"がヒットするので、 clsコマンドを実行します。

 


Posted in: PowerShell , コマンドレット  Tags:

最新のブログ

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
HIRO posted on 10月 6, 2008 23:36

今日は、Get-Historyコマンドレットについてまとめてみました。

コマンドレット名

Add-History

エイリアス

なし

説明

現在のコマンド実行履歴に指定した履歴(HistoryInfoオブジェクト)を追加します。
指定可能なデータには Get-History コマンドレットの結果、Import-Clixml、または Import-Csv の HistoryInfo オブジェクトがあります。

書式

Add-History [[-inputObject] <PSObject[]>] [-passThru] [<CommonParameters>]

パラメータ
-inputObject <PSObject[]>
現在のコマンド実行履歴に指定した履歴(HistoryInfoオブジェクト)を追加します。
指定可能なデータには Get-History コマンドレットの結果、Import-Clixml、または Import-Csv の HistoryInfo オブジェクトがあります。

 

–––––––––– -inputObject パラメータの使用例1 ––––––––––

 

PS > Add-History (Get-History)

 

このコマンドを実行すると、Get-History コマンドレットの結果を現在の履歴に追加します。

 

–––––––––– -inputObject パラメータの使用例2 ––––––––––

 

PS > Get-History | Export-CSV C:\Work\History.csv
PS > Import-CSV C:\Work\History.csv | Add-History

 

このコマンドを実行すると、History.csvに格納された履歴を現在の履歴に追加します。

 

–––––––––– -inputObject パラメータの使用例3 ––––––––––

 

PS > Get-History | Export-Clixml C:\Work\History.xml
PS > Import-Clixml C:\Work\History.xml | Add-History

 

このコマンドを実行すると、History.xmlに格納された履歴を現在の履歴に追加します。


 

-passThru
通常 Add-History コマンドレットは結果オブジェクトをパイプラインへ渡しません。このパラメータを使用することでパイプラインを介して値を渡すようになります。

 

–––––––––– -passThru パラメータの使用例1 ––––––––––

 

PS > Import-Clixml C:\Work\History.xml | Add-History -passThru

 

このコマンドを実行すると、追加したコマンド実行履歴がコンソールに出力されます。

Posted in: PowerShell , コマンドレット  Tags:

最新のブログ

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
HIRO posted on 10月 5, 2008 23:20

今日は、Get-Historyコマンドレットについてまとめてみました。

コマンドレット名
Get-History

エイリアス
ghy

説明
現在起動しているPowerShell上で入力したコマンド履歴の一覧を表示します。

下記は Get-History コマンドレットを実行してみた例です。
Windows PowerShellを起動してから現時点までに入力したコマンドの履歴が表示されます。
履歴にはIDが付与され、古い方から1となります。
保存される履歴の数は自動変数 $MaximumHistoryCount で決められておりデフォルト値は64です。
最大値を超えると古いものから順に削除されていきます。

PS > Get-History
Id CommandLine
–– –––––––––––
 1 Get-Help Get-History
 2 Get-Help Get-History -Detailed
 3 Get-History
 4 cd C:\Work2
 5 Get-History

書式
Get-History [[-id] <long[]>] [[-count] <int>] [<CommonParameters>]

パラメータ
-Id <long[]>
指定したIDの履歴を取得します。カンマで区切って複数のIDを指定することもできます。

–––––––––– -Id パラメータの使用例1 ––––––––––

PS > Get–History –Id 2

  Id CommandLine
  –– –––––––––––
   2 Get–Help Get–History -Detailed

このコマンドを実行するとIDが2の履歴を取得します。

–––––––––– -Id パラメータの使用例2 ––––––––––

PS > Get–History –Id 2,5

  Id CommandLine
  –– –––––––––––
   2 Get–Help Get–History -Detailed
   5 Get–History

このコマンドを実行すると、IDが2と5の履歴を取得します。

-count
取得する最新のエントリ数を指定します。

–––––––––– -count パラメータの使用例1 ––––––––––

PS > Get–History –count 3

  Id CommandLine
  –– –––––––––––
   3 Get–History
   4 cd C:\work
   5 Get–History

このコマンドを実行すると、最新の履歴3件を取得します。

–––––––––– -count パラメータの使用例2 ––––––––––

PS > Get–History –id 4 –count 3

  Id CommandLine
  –– –––––––––––
   2 Get–Help Get–History –Detailed
   3 Get–History
   4 cd C:\work

このコマンドを実行すると、IDが4までの最新の履歴3件を取得します。

<CommonParameters>


その他の使用例
–––––––––– 使用例1 ––––––––––

PS > Get–History | Where–Object {$_.CommandLine –like "*Det*"}

  Id CommandLine
  –– –––––––––––
   2 Get–Help Get–History –Detailed
このコマンドを実行すると、文字列「Det」を含む履歴を取得します。

–––––––––– 使用例2 ––––––––––

PS > Get–History | Export–Csv History.csv

このコマンドを実行すると、Get-History コマンドレットで取得可能な履歴を History.csvにエクスポートします。
このCSVファイルはAdd-History コマンドレットで再利用可能です。

関連項目
Add-History コマンドレット

 


Posted in: PowerShell , コマンドレット  Tags:

最新のブログ

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

   今日はAdd-Contentコマンドレットの-passThruパラメータについてまとめてみました。

-passThru
Add-Contentコマンドレットによって作成された値(-valueパラメータに渡した値)をパイプラインを介して渡せるようにします。

通常、Add-Contentコマンドレットはパイプラインを介して値を渡しません。よって
Add-Content -path "Test.txt" -Value "ABC" | {$_}

   上記のコマンドレットを実行しても、パイプラインにオブジェクトは渡されないため、何も出力せずに終了します。

–––––––––– -passThru パラメータの使用例1 ––––––––––
Add-Content -path "Test.txt" -Value "ABC" -passThru | {$_}

   パイプラインにオブジェクトを渡したい場合には、上記のように-passThruパラメータを使用します。
   このパラメータはスイッチパラメータのため値を指定する必要はありません。

–––––––––– -passThru パラメータの使用例2 ––––––––––
Add-Content -path "*.txt" -Value "ABC" -passThru | {$_}
このコマンドレットでは -pathパラメータで複数のテキストアイル(*.txt)を指定しているため、パイプラインには対象となったファイルの数だけ"ABC"という文字が渡されることになります。つまりカレントディレクトリに3つのテキストファイルが存在した場合には、パイプラインを介して3回"ABC"が送られます。

Posted in: PowerShell , コマンドレット  Tags:

最新のブログ

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

 

-include <string[]>
-includeパラメータは、-pathパラメータで指定した項目の中から、対象を絞り込みます。
"*.txt"などパス要素やパターンを指定します。
–––––––––– -include パラメータの使用例1 ––––––––––
Add-Content -Path "*.txt" -Value "ABC" -Include "test*.txt"

    このコマンドレットは、"ABC"という値を、拡張子が"*.txt"のファイルへ追記します。
    ただし、-Includeパラメータで"test*.txt"としているため、拡張子が"*.txt"のファイルの中でも、特にファイル名が"test*.txt"のものだけを対象とします。

-exclude <string[]>
-excludeパラメータは、-pathパラメータで指定した項目の中から、項目を除外します。
"*.txt"などパス要素やパターンを指定します。
–––––––––– -exclude パラメータの使用例1 ––––––––––
Add-Content -Path "*.txt" -Value "ABC" -Exclude "test*.txt"

    このコマンドレットは、"ABC"という値を、拡張子が"*.txt"のファイルへ追記します。 
    ただし、-Excludeパラメータで"test*.txt"としているため、拡張子が"*.txt"のファイルの中でも、特にファイル名が"test*.txt"を除外したものが対象となります。


Posted in: PowerShell , コマンドレット  Tags:

最新のブログ

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

 

-value <Object[]> パラメータ

指定したファイルに追記する値を指定します。
追記できる値は、文字列、コマンドレットが返す値などを指定します。

–––––––––– -value パラメータの使用例1 ––––––––––

Add-Content -Path "Test.txt" -Value "テストファイルです"

このコマンドレットを実行すると、既存のTest.txtファイルに「テストファイルです」という文字列を追記します。

 

–––––––––– -value パラメータの使用例2 ––––––––––

$a = "テストファイルです"
Add-Content -Path "Test.txt" -Value $a

このコマンドレットを実行すると変数 $a に代入した文字列を Test.txt へ追記します。

 

–––––––––– -value パラメータの使用例3 ––––––––––

Add-Content -Path "Date.txt" -Value (Get-Date)

このコマンドレットを実行すると Get-Dateコマンドレットが返す値を Date.txt に追記します。
このようにコマンドレットが返す値を追記することが可能ですが、複数の値を一度に返すようなコマンドレットを指定した場合には期待通りの値を取得できないので注意が必要です。

 

–––––––––– -value パラメータの使用例4 ––––––––––

Add-Content -Path "Test.txt" -Value (Get-Content "Sample.txt")

このコマンドレットを実行すると、Sample.txt の内容を Test.txt に追記します。
-value パラメータに直接パスを指定しても、パスを文字列として認識してしまうためこのような処理が必要となります。

 

–––––––––– -value パラメータのNG例1 ––––––––––

Add-Content -Path "ServiceList.txt" -Value (Get-Service)

このコマンドレットは Get-Service のコマンドレットの結果を ServiceList.txtに追記しようとしていますが期待通りの結果にはなりません。("System.ServiceProcess.ServiceController"という文字列がサービスの数だけ書き込まれます)
これは、Get-Service が複数のオブジェクトを返すためです。

Get-Service | %{Add-Content -Path "ServiceList.txt" -Value $_.ServiceName}

などの工夫が必要です。


Posted in: PowerShell , コマンドレット  Tags:

最新のブログ

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

現在、PowerShell WikiでAdd-Contentコマンドレットの使用方法についてまとめています。(サイト自体は今年の7月に立ち上げていたのですがこれから始動といったところです)

では、本題です。


Add-Contentコマンドレットは

指定した項目やファイルに内容を追加することができます。内容を指定するには、コマンドに内容を入力するか、内容が入力されているオブジェクトを指定します。指定した項目やファイルが存在しない場合は、新規で作成され、指定した値が追記されます。


基本構文

Add-Content -Path "パス文字列" -Value "追記する値"

です。実際には数多くのパラメータがありますが、後日紹介していきたいと思います。

今回取り上げるのは-Pathパラメータです。


-Pathパラメータは

内容を追加する先のパスを指定します。パスにはワイルドカードを指定することができます。また、カンマで区切ることで複数のファイルを指定することができます。

エスケープ文字を含むパスを指定することはできません。エスケープ文字を含むパスを指定したい場合は-literalPathパラメータを使用します。(PowerShellでは`(アクサングラーブ文字)がエスケープ文字として扱われます。)


使用例

–––––––––– -Pathパラメータの使用例1 ––––––––––

Add-Content -Path "test.txt" -Value "ABC"

このコマンドを実行すると、カレントディレクトリに存在する test.txt というファイルに"ABC"という文字列を追記します。
ファイルが存在しない場合は新規で作成され"ABC"という文字列を書き込みます。

–––––––––– -Pathパラメータの使用例2 ––––––––––
Add-Content -Path "test1.txt","test2.txt" -Value "ABC"

このコマンドを実行すると、test1.txt と test2.txtの2つのファイルに文字列"ABC"を追記します。
ファイルが存在しない場合は新規で作成され"ABC"という文字列を書き込みます。

–––––––––– -Pathパラメータの使用例3 ––––––––––
Add-Content -Path "*.txt" -Value "ABC"


このコマンドを実行すると、カレントディレクトリにある拡張子が*.txtのファイルに"ABC"という文字列を追記します。


–––––––––– -PathパラメータのNG例1 ––––––––––

Add-Content -Path "tes`t.txt" -Value "ABC"

このコマンドレットはパスにエスケープ文字`tが含まれているため「パスに無効な文字が含まれています。」のエラーが発生します。
エスケープ文字が含まれているパスを指定したい場合には-Pathパラメータの代わりに-literalPathパラメータを使用します。

–––––––––– -PathパラメータのNG例2 ––––––––––
Add-Content -Path "tes[t.txt" -Value "ABC"

このコマンドレットはパスに[が含まれているため「指定されたワイルドカード パターンは無効です」のエラーが発生します。-Pathパラメータでは"["をワイルドカードととして認識します。この例で使用されている文字"["は正規表現で使用される文字であり"]"と対で使用しなければなりません。このようなファイル名を使用したい場合は-Pathパラメータの代わりに-literalPathパラメータを使用します。


まとめ

-Pathパラメータはワイルドカードを使用して、複数ファイルへ一気に同じ文字列を追記できるところがすごいですね。

ワイルドカードを使用できる分、-PathパラメータのNG例2のようにワイルドカード構成する文字を含むパスは指定できないという制限がありますが、-literalPathパラメータを使用すればこの問題は回避できます。

-Pathと-literalPathパラメータを使い分けるポイントとなりますね。


Posted in: PowerShell , コマンドレット  Tags:

最新のブログ

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Calendar

«  1月 2009  »
月曜火曜水曜木曜金曜土曜日曜
2930311234
567891011
12131415161718
19202122232425
2627282930311
2345678
View posts in large calendar

Recent Posts

Recent Comments

Banners

Theme Grabber
Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2009 PowerShell from Japan!!