ブログシステムをバージョンアップしました

by Administrator 30. 4月 2009 22:27

PowerShell from Japan!! のブログシステムはBlogEngine.NETを使用しております。

さきほど、1.4.0から1.4.5へバージョンアップいたしました。

不具合等発見した場合にはご連絡いただけると助かります。

よろしくお願いいたします。

 

追記です。

コメントするときにBBコードを使用することができます。

PowerShellコード用やTextFile用も準備しましたので、ご活用ください。

最新のブログ

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

Tags:

BlogEngine.NET | お知らせ

VB6の関数一覧を出力する

by 山口 21. 4月 2009 13:53

ちょっとした小ネタです。

VB6のソースから関数の一覧を抜き出したいと言われたので、PowerShellでサクっと作ってみました。

Get-ChildItem -recurse -include *.bas | % {[string]::Join("`n", ((Get-Content $_) | % { $_.Trim() })).Replace("_`n", "").Split("`n") | ? { $_ -match "Public (Sub|Function)" }}

これを実行するとカレントディレクトリとその配下にあるディレクトリからVB6のモジュールファイルを検索して、その中に定義されているPublicな関数とプロシージャが標準出力に出力されます。

調子に乗ってワンライナーで書いたので読みづらいですが、やっている事は、

  1. Get-ChildItemでカレントディレクトリとその配下にある「.bas」ファイルを検索する。
  2. Get-Contentでファイルの内容を配列で取得する。
  3. string.Trimメソッドで各要素の先頭と末尾のスペースを削除する。
  4. string.Joinメソッドで、その配列を改行コードで連結する。
  5. string.Replaceメソッドで、"_" + 改行コードを削除する(VBの_改行を削除する)。
  6. string.Splitメソッドを使って、改行コードで分割する。
  7. 正規表現を使って、関数の定義を探す。

となります。

こういった処理が一行で書けてしまうのもPowerShellの魅力のひとつですね。

最新のブログ

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

Tags:

PowerShell

[Tips]指定したパラメータを持つコマンドレット一覧を取得する

by HIRO 21. 4月 2009 12:40

訳あって、特定のパラメータを持つコマンドレットの一覧が取得したかったので、下記のような関数を作ってみました。(PowerShell V2 CTP3で動作確認済み)。 関数名はいまいちなので好みに合わせて変更してください。

function Get-XParamCmdlet([string]$paraname)
{
  $CmdCnt = 0
  Get-Command -CommandType cmdlet |
  %{
    $a = Get-Command $_.Name | select Parameters
    if ( $a.Parameters.Keys -contains $paraname)
    {
      $_.Name
      $CmdCnt += 1
    }
  }
  "$CmdCnt 個見つかりました"
} 

この関数は、引数にパラメータ名を指定します。

たとえば、Encodingというパラメータを持つコマンドレットは下記のようにして取得します。

PS> Get-XParamCmdlet "Encoding"
Add-Content
Export-Clixml
Export-Csv
Export-PSSession
Get-Content
Out-File
Select-String
Send-MailMessage
Sent-Content
9 個見つかりました

関数の中身についてちょっと補足します。

まずGet-Commandでコマンドレットのパラメータコレクションを取得します。

つぎに取得したコレクションに対して、-containsを使用して指定されたパラメータが含まれているかをif文で判断しています。

もう少し、スマートに書くことができるような気がするのですが、その辺はご自身で調整ください。

 

これで、特定のパラメータを持つコマンドレットを調べることができますので、ぜひお試しください。

最新のブログ

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

Tags:

Tips | PowerShell V2 CTP3

[PowerShell V2 CTP3] カスタムメニューをスクリプトから実行する

by HIRO 17. 4月 2009 09:07

今回は、PowerShell ISEに追加したカスタムメニューをスクリプトから実行する方法について説明します。

カスタムメニューを追加する方法については 「PowerShell ISEにカスタムメニューを追加する方法」を参照ください。

まずは、下記のように入力してカスタムメニューを作成します。

#カスタムメニューに[Get-Date]というメニューアイテムを追加
$psISE.CustomMenu.Submenus.Add("Get-Date", {Get-Date}, "Ctrl+D")

#カスタムメニューに[日時]というメニューアイテムを追加
$parentmenu = $psISE.CustomMenu.Submenus.Add("日時", $null, $null)
#[日時]の子として[昨日][今日][明日]を追加
$parentmenu.Submenus.Add("昨日",{(Get-Date).AddDays(-1)}, $null)
$parentmenu.Submenus.Add("今日",{(Get-Date).AddDays(0)}, $null)
$parentmenu.Submenus.Add("明日",{(Get-Date).AddDays(1)}, $null)

このようにして作成したカスタムメニューは下記のようになります。

カスタムメニュー

カスタムメニューをスクリプトから実行する方法ですが、ExecuteScriptプロパティを使用します。

まずは [Get-Date]メニューの実行です。

[GetDate]メニューは $psIse.CustomMenu.Submenus[0] と表すことが出来ます。これを実行するには先頭にドットをつけて下記のように記述します。

PS> . $psIse.CustomMenu.Submenus[0].ExecuteScript
2009/04/17 9:00:00

次に[日時]の[明日]を実行してみましょう。 これは$psIse.CustomMenu.Submenus[1] .SubMenus[2] と表すことが出来るので

PS> . $psIse.CustomMenu.Submenus[1].SubMenus[2].ExecuteScript

とします。

補足:

ExecuteScriptはプロパティであるため、先頭にドットをつけないで使用した場合には、登録されているスクリプトが表示されます。

最新のブログ

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

Tags:

PowerShell V2 CTP3 | PowerShell ISE

[PowerShell V2 CTP3] PowerShell ISEでのRead-Hostコマンドレット

by HIRO 16. 4月 2009 09:30

通常の(ISEではない方)でRead-Hostコマンドレットを実行すると、カーソルが点滅して入力を促します。

image3

PowerShell ISEの方でRead-Hostコマンドレットを実行すると、VBScriptとかのInputboxのようなダイアログが表示されます。

image1

-Promptパラメータも使用可能なので

PS> $a = Read-Host “下記に文字列を入力してください”

のようにすると、下記のようにプロンプト付きで表示されます。

image2

ちなみに、[X]ボタンを押したときと[Cancel]ボタンが押されたときは、入力したデータは返されません。(当然ですね)

最新のブログ

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

Tags:

PowerShell ISE | PowerShell V2 CTP3

Calendar

<<  3月 2010  >>
月曜火曜水曜木曜金曜土曜日曜
22232425262728
1234567
891011121314
15161718192021
22232425262728
2930311234

View posts in large calendar
Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2010 PowerShell from Japan!!