管理人 の紹介

PowerShell from Japan!! 管理人のHIROです。 Microsoft MVP for PowerShell Jan. 2009 - Dec. 2010

MVA で PowerShellを学ぼう!

みなさんはMVA( Microsoft Virtual Academy )をご存じでしょうか。

MVAでは、無償でMictosoftの技術を学ぶことができるサイトで、ついにPowerShellが追加されました。

MVAでPowerShellを学びたい場合は、以下URLにアクセス!!

http://www.microsoftvirtualacademy.com/training-courses/advanced-tools-and-scripting-with-powershell-3-jump-start-japanese#?fbid=LsDf70Y9Wxe

公開されている動画は字幕なし英語となっています。

日本語も公開されるといいですね。

是非これを機会に PowerShellをマスターしましょう!

[Tips] エクスプローラの右クリックメニューにpowershellを追加する

本記事は、レジストリを操作します。必ず自己責任の下において実行してください。


エクスプローラの右クリックメニューからPowerShellが起動できたら便利だとは思いませんか?

ということで、やってみたのでその方法を紹介します。

まず レジストリエディタを起動します。

powershell(コマンドプロンプトでもOK。ファイル名を指定して実行でもOK)上から regedit[Enter] で起動します。

HKEY_CLASSES_ROOT\Folder\Shellに新しいキーとしてpowershellを作成します。

つぎに、powershellの下にcommandを作成して、値のデータを「powershell.exe -noexit -command “cd ‘%L’ “」にします(下図参照)。

レジストリの編集

 

編集が終わったら、エクスプローラを開いて、任意のフォルダを右クリックしてみてください。コンテキストメニューに「powershell」が追加されていることを確認できます。

「powershell」を選択すると、今選択したフォルダをがカレントディレクトリとなってPowerShellが起動します。

pwoershell2

[Tips] メソッドを追加してみる

String型の値にダブルクォーテーションを付けて出力させる、という処理が頻繁にあったため、String型にメソッドを追加してみました。

メソッド名はAddDoubleQuoteとし、以下のようにして使用できるようにしたいと思います。

PS> $str = "Test"
PS> $str.AddDoubleQuote()
PS> "Test"

以下は、AddDoubleQuoteメソッド作成手順です。

まずは、xmlファイルを作成します。

<?xml version="1.0" encoding="utf-8" ?> 
<Types>  
  <Type> 
    <Name>System.String</Name> 
    <Members> 
      <ScriptMethod> 
        <Name>AddDoubleQuote</Name> 
        <Script> 
          '"' + $this + '"'
        </Script> 
      </ScriptMethod> 
    </Members> 
  </Type> 
</Types>

Stringクラスの拡張となるため、<Name>タグにはSystem.Stringを記述。

メソッド名は、AddDoubleQuoteとするので、<ScriptMethod>タグの中の<Name>タグの中に記述します。

そして、実際の処理は<Script>タグの中に記述します。

自分自身は$thisで表されます。ここでは$thisの両脇にダブルクォーテーションが付くようにしています。

上記のXMLファイルは、拡張子をps1xmlとして保存します。

今回は $pshome 配下に AddDoubleQuote.ps1xml という名前で保存しました。
AddDoubleQuoteメソッドを使用できるようにするには、Update-TypeDataコマンドレットを使用します。

update-typedata -prependpath C:\Windows\System32\WindowsPowerShell\v1.0\AddDoubleQuote.ps1xml

あとは、最初の例に示した方法で使用します。

PS> $str = "Test"
PS> $str.AddDoubleQuote()
PS> "Test"

追加したAddDoubleQuoteメソッドは、PowerShellコンソール単位でしか使えません。
処理を永続化したい場合は、$PROFILEに登録しておきましょう。

プロファイルがまだない場合は下記コマンドで作成します。

New-item –type file –force $profile

あとは、作成したプロファイルに下記を追加します。これで、次回以降PowerShellが起動されたときから AddDoubleQuoteメソッドが使えるようになります。

update-typedata -prependpath C:\Windows\System32\WindowsPowerShell\v1.0\AddDoubleQuote.ps1xml

PowerShellでSQLiteを使用する(4)

前回は SQLiteでInsert文を使用する方法について説明しました。

データを追加したら、やはり取得できなくては意味がないですね。

ということで、今回はSELECT文を使用する方法について説明します。

INSERT文の時と異なる部分は、ヒア文字列の中身がSELECT文になるということ、

コマンドの実行が、ExecuteNonQueryからExecuteReaderに代わることです。

ExequteRederは実行したSQL文で影響を受けた行が返されます。

戻り値のReadメソッドを実行すると、SQL文に合致するレコードの有無がわかるので、While文でループして各データの取り出しを行います。

[void][System.Reflection.Assembly]::LoadFile("C:\Work\DB\System.Data.sqlite.dll")
$sqlite = New-Object System.Data.SQLite.SQLiteConnection
$sqlite.ConnectionString = "Data Source = C:\Work\DB\data.db"
$sqlite.Open()

#SELECT文
$cmd = @"
SELECT * FROM USER
"@

$sqlcmd = New-Object System.Data.SQLite.SQLiteCommand
$sqlcmd.Connection = $sqlite
$sqlcmd.CommandText = $cmd

$record = $sqlcmd.ExecuteReader()

while ( $record.Read() )
{
	write ("{0}`t{1}" -f $record[0], $record[1])
}
$sqlite.Close()