PowerShell

VB6の関数一覧を出力する

ちょっとした小ネタです。VB6のソースから関数の一覧を抜き出したいと言われたので、PowerShellでサクっと作ってみました。 Get-ChildItem -recurse -include *.bas | % {[string]::Join("`n", ((Get-Content $_) | % { $_.Trim() })).Replace("_`n", "").Sp…

PowerShellで作るdeliciousクライアント ラスト

前回の続きです。 タグの一覧を取得 タグの一覧を取得する機能を実装します。まずは「DeliciousTag.vb」というファイル名でクラスファイルを追加します。 DeliciousTag.vb Public Class DeliciousTag Private _name As String Public Property Name() As Str…

PowerShellで作るdeliciousクライアント その4

前回の続きです。 ブックマークの削除 今回はブックマークの削除機能から実装します。DeliciousクラスにDeleteBookmarkという名前で、引数に削除するブックマークのURLを指定するメソッドを定義します。 Delicious.vb Sub DeleteBookmark(ByVal url As Strin…

PowerShellで作るdeliciousクライアント その3

前回の続きです。前回でブックマークの一覧を取得できるようにしましたが、あのままではURLがわかってもブラウザで開くという作業が面倒なので、その辺を簡略化できるように与えられたURLを既定のブラウザで開くコマンドレットを作っておきます。「Commands…

PowerShellで作るdeliciousクライアント その2

前回の続きです。 ブックマーク一覧の取得 - dirコマンドへの対応 まずはブックマーク一覧の取得機能を実装します。操作的には「delicious」ドライブに移動して、dirコマンド(Get-ChildItemコマンドレット)を実行するとブックマークの一覧が表示されるとい…

PowerShellで作るdeliciousクライアント その1

以前、PowerShellのカスタムプロバイダーという機構を紹介する記事を書きました。 カスタムプロバイダーを作ってみよう その1 この時は具体的なプロバイダーではなく、プロバイダー作成の概要を説明するという形でしたが、今回いい題材を思いついたのでその…

PowerShellでWebにアクセスしてみよう!

今回はPowerShellを使ってWeb(インターネット)にアクセスする方法を紹介します。PowerShellは.NET Framework(.NET)をベースにして作られているので、.NETに用意されている豊富なライブラリをそのまま使用することができます。Webへのアクセスについても.…

カスタムプロバイダーを作ってみよう ラスト

前回の続きです。今回はSet−Contentコマンドレットへの対応からはじめます。 Set-Contentコマンドレットへの対応 Set-Contentコマンドレットに対応するには、IContentCmdletProviderインターフェースの以下のメソッドを実装します。 void ClearContent ICont…

カスタムプロバイダーを作ってみよう その4

前回の続きです。今回はタブ補完から実装します。 タブ補完への対応 タブ補完に対応させるには、以下のメソッドをオーバーライドします。 void GetChildNames(string path, ReturnContainers returnContainers) 実装する前にタブ補完とはどのような機能なの…

カスタムプロバイダーを作ってみよう その3

前回の続きです。今回はNew-Itemコマンドレットへの対応から始めます。 New-Itemコマンドレットへの対応 New-Itemコマンドレットに対応させるには、以下のメソッドをオーバーライドします。 void NewItem(string path, string itemTypeName, object newItemV…

カスタムプロバイダーを作ってみよう その2

前回の続きです。今回はまず、自作のプロバイダーでcd ができるようにする、つまりSet-Locationコマンドレットに対応させます。その前にこのプロバイダーをデバッグできるようにしておきましょう。 デバッグの設定 Visual Studioのプロジェクトのプロパティ…

カスタムプロバイダーを作ってみよう その1

PowerShellの重要な特徴として、ファイルシステムやレジストリ、環境変数など異なるデータソースに対して共通の操作(コマンドレット)が行えるということが挙げられます。例えば、以下のように「C」ドライブ直下に「New-Item」コマンドレットでファイルを作…

ActiveXPosh

InfoQの記事で「ActiveXPosh」というのが紹介されていた。 VBScript、JScriptからWindows PowerShellを使用する これはVBScriptやJScriptからPowerShellを呼び出せるようにしたもの。やってることはPowerShellをCOMでラップしてCOM対応言語から呼び出せるラ…

PowerShellASP

前にこのエントリで、ASP.NETからPowerShellスクリプトを呼び出してビュー(というよりデータだけど)を生成するというのをやったけど、それを上回るものを見つけたのでご紹介。 http://www.powershelltoys.com/default.aspx これはPowerShellのエンジンをAS…

PowerShellの実行環境について

今回はPowerShellの実行環境について、私が普段使っている環境を紹介します。 ここでいう環境とはPowerShellの起動時に読み込まれるプロファイルファイルの設定についてです。プロファイルファイルとはユーザディレクトリ配下の「WindowsPowerShell\profile.…

PowerShell from Japan!!に参加することになりました

HIRO's.NETのHIROさんに誘われて「PowerShell from Japan!!」というサイトに参加することになりました。 http://powershell.hiros-dot.net/default.aspx PowerShellを専門に扱うサイトで、PowerShellの入門記事やTipsを紹介していこうということらしいです。…

PowerShell流のXML生成術

多くの言語ではXMLの生成に通常DOM(Document Object Model)を使いますが、PowerShellではDOMを使うよりも可読性や使い勝手の良さでより優れた方法があります。 基本 その方法は以下のように「ヒア文字列」と「文字列への変数展開」を利用した簡易的なテン…

チケットの情報を取得するスクリプト

PowerShellからTracのチケット情報を取得するスクリプトを作ってみた。TracにはオプションでXML-RPCインターフェースが用意されているので、このインターフェース経由で情報を取得することになる。そのためにまず、以前作ったXmlRpc用のPowerShellスクリプト…

Yahoo路線検索スクリプト

しばらくプログラムネタを書いていなかったので、無理矢理なんか作ってみた。よく使うWebサービスをPowerShellから使えるようにすると便利なので、Yahoo路線検索をPowerShellから呼び出せるようにしてみた。 Get-Transit.ps1 param([string]$from="津", [str…

PowerShellスクリプトの有効活用

PowerShellでWebサイトにアクセスして情報を取ってきて、その情報をオブジェクト(PSObject)として出力するようなスクリプトを作った。このスクリプトはあくまでもテスト用に作っただけで、Webサイトへのアクセス方法と情報の取得方法がわかって完全に動作…

最近投稿したはてなブックマークの一覧を取得するスクリプト

さっき作ったWSSE認証用のスクリプトを使って、はてなブックマークから最近投稿したブクマ一覧を取得するスクリプトを作った。 Get-RecentBookmark.ps1 param([string]$userName, [string]$password) if($userName.Length -eq 0 -or $password.Length -eq 0 …

はてなブックマークを投稿するスクリプト

お次は、はてなブックマークにブックマークを投稿するスクリプト。 New-Bookmark.ps1 param([string]$userName, [string]$password, [string]$url, [string]$summary) if($userName.Length -eq 0 -or $password.Length -eq 0 -or $url.Length -eq 0 -or $arg…

WSSE認証用のヘッダ文字列を生成するスクリプト

はてなブックマークのAtomAPIを利用するためにはWSSE認証を使用するらしいので、PowerShellからWSSE認証を行うためのスクリプトを作った。 Get-WsseHeader.ps1 param([string]$userName, [string]$password) if($userName.Length -eq 0 -or $password.Length…

はてなブックマークを削除、編集、取得するスクリプト

はてなブックマークAPIを使った残りの機能三連発。 ブックマークの削除 指定したIDのブックマークを削除する。 Remove-Bookmark.ps1 param([string]$userName, [string]$password, [string]$id) if($userName.Length -eq 0 -or $password.Length -eq 0 -or $…

カスタムプロバイダを単体テストするには?

PowerShellでカスタムプロバイダを作っていて、ある程度複雑になってくると単体テストをしたくなってくる。でも、カスタムプロバイダで実装するメソッドはそのほとんどがprotectedなため、自前でカスタムプロバイダをインスタンス化してテストする事はできな…

PowerShellのカスタムプロバイダをCodeReposにコミットした

以前作ったPowerShellのカスタムプロバイダをCodeReposにコミットして、プロジェクトページも作った。 http://coderepos.org/share/wiki/PSCutomProviders 使い慣れたTracだけあって作業が進む進むw調子こいて色々書いてしまった。CodeReposの自由さが気に…

PowerShellにWebDAVをマウントする

最近PowerShellばっかりやっている気がするけど、今回はPowerShellにWebDAVサポートを追加した。これを使うとWebDAVサーバー上のリソースをローカルのリソースのように扱える。ソースは以下から OneDrive マウントの仕方 PS > New-PSDrive Hoge Web http://l…

PowerShellで2chビューワ もっとイカスの作った

これでPowerShellのスクリプトを組み合わせて2chビューワを作ったけど、こんなことができるとわかって、もっとイカス2chビューワを思いついた。ソースはあとにして、ソースは以下から OneDrive どんな風に2chをビューするかというと、まず「2ch」ドライブにc…

PowerShellでTodo管理 その3

全ソース TodoProvider.cs using System; using System.IO; using System.Runtime.Serialization.Formatters.Binary; using System.Management.Automation; using System.Management.Automation.Provider; using System.Collections.ObjectModel; using Syst…

PowerShellでTodo管理 その2

前回で、Todoドライブへのcdが失敗したので、とりあえずcdができるようにする。といっても、NavigationCmdletProviderにはオーバーライドできるメソッドが山程あるので、どれをどうすればいいのかわからない。仕方が無いので、手当たり次第にオーバーライド…