PowerShell

PowerShellでTodo管理 その1

なんとなくTodoアプリを作りたくなったので、PoweShellで作ってみる。最初はスクリプトで作ろうかと思ったけど、無理がありそうだったのでカスタムProviderでやることにした。PowerShellの特徴として、種類の違うデータに対して同一のコマンドで操作を行える…

PowerShellで2chビューワ

http://engineers-be-ambitious.blogspot.com/2007/10/2ch.htmlなんていうのが紹介されていたので、さっそくPowerShellで2chビューワを作ってみた。板一覧を取得するスクリプト Get-BoardList.ps1 param([string]$boardCategory="*", [string]$boardName="*"…

Google Chart API を呼び出すスクリプト

既に誰かがやっているだろうけど、Google Chart API をPowerShellから呼び出すスクリプトを作ってみた。 Show-Chart.ps1 param([object[]]$data, [string]$chartType="lc", [int]$width=300, [int]$height=300) if($data -eq $nll -or $args[0] -eq "-?") { …

カロリーAPIを呼び出すスクリプト

カロリーAPIとかいうのが紹介されていたので、さっそくPowerShellから使えるようにした。 http://soogle.ddo.jp/calapi/ Get-Carolie.ps1 param([string]$name) if($name.Length -eq 0) { exit 1 } [void](Import-Assembly System.Web) $xml = New-Object xm…

Excite翻訳で英語を日本語に翻訳するスクリプト

Excite翻訳で英語を日本語に翻訳するスクリプトを作ってみた。 Eng-ToJapan.ps1 param([string]$word) if($word.Length -eq 0 -or $args[0] -eq "-?") { $commandName = [IO.Path]::GetFileNameWithoutExtension($MyInvocation.MyCommand.Name) Write-Host @…

goo辞書を使って英単語を検索するスクリプト

PowerShellからgoo辞書を使いたくなったので作ってみた。 Find-Word.ps1 param([string]$word) if($args[0] -eq "-?" -or $word.Length -eq 0) { $commandName = [IO.Path]::GetFileNameWithoutExtension($MyInvocation.MyCommand.Name) Write-Host @" Name:…

.tfs-ignoreファイルを作るスクリプト

CodePlexにソースをアップするためにTeam Explorerを使っているが、これがとにかく使いにくい。普段SubclipseやTurtoiseSVNなんかの使い勝手のいいソース管理クライアントを使っているので、それらと比べるとどうしても見劣りしてしまう。Visual Studioのプ…

画像ファイルのサイズを変更するスクリプト

エロ画像コレクションをサムネイル付きで一覧表示するHTMLを生成するスクリプトを作るために、画像からサムネイル画像を作るスクリプトを作ってみた。 Resize-Image.ps1 param([string[]]$fileNames, [int]$width=150) if($args[0] -eq "-?") { $commandName…

PowerShellのコレクション比較演算子について

PowerShellのコレクションに対して-eq演算子で比較すると不可解な結果が返ってきてずっと頭をかしげていた。 PS > $a = @(1,2,3,4,5) PS > $a -eq 2 2なんて比較をするとbool値じゃなくて比較した右オペランドの値と同じ値が返ってくる。この挙動の意味がさ…

PowerShellにGrep(みたいなの)が標準である件について

前にPowerShellでGrep機能のあるスクリプトを作ったけど、標準のコマンドレットの「Select-String」というのがまんまGrepの機能を持ってたorz...しかもこっちはパイプラインからの入力も受け付けるし、はるかに高機能ときた。とりあえずAlias設定しといた。 …

PowerShellからはてなAPIを呼び出す 2

昨日作ったはてなAPIを呼び出すスクリプトから、XML-RPCの部分を抜き出して汎用的なスクリプト(Get-XmlRpc.ps1)にした。 Get-XmlRpc.ps1 param([string]$reqURL, [string]$methodName, [object[]]$arguments=@()) if($reqURL.Length -eq 0 -or $methodName…

PowerShellからはてなAPIを呼び出す 1

なんかムショウにPowerShellからWebサービスを使いたくなったので、身近なところではてなの「ブックマーク件数取得API」を呼び出してみた。 XML-RPCというプロトコルで呼び出す必要があるらしく、聞いた事はあるけど使った事が無いのでとりあえず調べる。 ↓…

C#からPowerShellをいじくりたおす 2

「Runspace」というクラスについてわかった事。例えば、以下のように「RunspaceInvoke」だけで変数を宣言して、その変数を出力する。 var pshEngine = new RunspaceInvoke(); pshEngine.Invoke("$global:msg = \"Hello\""); var psObjects = pshEngine.Invok…

C#からPowerShellをいじくりたおす 1

C#からPowerShellスクリプトを呼び出す方法を調べてみる。開発環境にはVisualC# 2008 Expressを使う。前提条件として「System.Management.Automation.dll」を参照していることと、以下の名前空間をusingしていること。 using System.Management.Automation; …

PowerShellでクラス(みたいなもの)を作ってみる

PowerShellでクラス(みたいなもの)を作ってみた。 # コンストラクタ param([string]$firstName, [string]$lastName) class Person | property FirstName $firstName | property LastName $lastName | def get_FullName { return "{0} {1}" -f $this.FirstN…

はてなブックマークのRSSデータを加工

はてなブックマークのデータを引っ張ってきて適当に加工してHTMLで出力したかったので、PowerShellでやってみた。 $xml = New-Object xml $xml.Load("http://b.hatena.ne.jp/coma2n/rss") $xml.RDF.item | sort title | ConvertTo-Html title -title "はてな…

PowerShellの勉強会

会社でPowerShellの勉強会を開く事になったので、その内容を考えながらアップしていく。 PowerShellとは Microsoftが開発した次世代のWindowsシェル環境です。 従来Windows上でのシェル環境はCmd.exe(コマンドプロンプト)しかありませんでした。(Cygwinな…

はてなダイアリーの分割

はてなでサブアカウントを作成できるというのを知って、さっそく作ってブログをもう一個作った。 で、本関係のエントリーを全部そっちに移そうと考えて、ダイアリーのデータをXMLにエクスポートした。 このXMLから本関係のエントリーだけを抽出して、新しい…

日付の書式指定

今開発しているシステムで現在の日付でフォルダを作成する処理があるのだが、その処理で作られたフォルダの名前が12時間表記になっているとPマネに指摘された。そういやまったく意識した事がなかった。ちなみにコードは以下(C#) Directory.CreateDirector…

ファイルの文字コードを変える

ファイルの文字コードを変えるスクリプト(Change-Encoding.ps1) param( [string[]]$fileNames, [Microsoft.PowerShell.Commands.FileSystemCmdletProviderEncoding]$encoding="UTF8", [string]$toEncoding="Default") if($args[0] -eq "-?") { $commandNam…

アセンブリのバージョンを取得する

アセンブリのバージョンを取得するスクリプト(Get-AssemblyVersion.ps1) param([string[]]$assemblyFiles) if($args[0] -eq "-?") { $commandName = [IO.Path]::GetFileNameWithoutExtension($MyInvocation.MyCommand.Name) Write-Host @" 名前 $commandNa…

Tracのバックアップ

会社で使っているTracのバックアップをするスクリプトをPowerShellで作ってみた。 readonly TRAC_HOME "D:\trac-0.1.1" readonly BACKUP_HOME "F:\Trac-Backup" readonly SVN_REPO (Join-Path $TRAC_HOME "svn_repo\projects") readonly SVN_ADMIN (Join-Pat…

ソースの行数をカウント

今日、なんとなくプログラムのソースを何行ぐらい書いているのか気になったので、さくっとワンライナーで書いてみた。 (dir -recurse -include *.cs -exclude *.Designer.cs | % { gc $_| % { $_.Trim() } | ? { $_ -ne "" -and -not $_.StartsWith("//") } …

オブジェクトを生成してプロパティを追加するスクリプト

PowerShellにはオブジェクトに動的にプロパティを追加する「Add-Member」コマンドレットがある。 使い方はこんな感じ。 オブジェクト | Add-Member NoteProperty [プロパティ名] [値] 「NoteProperty」の他にスクリプトを値として追加できる「ScriptProperty…

ForEach-Objectって・・・

「ForEach-Object」コマンドレットって、C#の「foreach」と違って、「GetEnumerator」メソッドを呼び出しているわけじゃないんやね。 その証拠にこれができない。 # 一文字ずつ表示 PS > "Hello" | foreach { Write-Output $_ } Hello # 本当はこう出て欲し…

for or foreach

こう書くなら for($i=0; $i-lt10; $i++) { Write-Output $i } この方がイカス! foreach($i in 0..9) { Write-Output $i } さらにこんな関数を定義すれば・・・ function range([int]$num) { return 0..(--$num) } Pythonみたいになる。 foreach($i in range…

バイト表示

なんとなくPowerShellで「1kb」って打ったら「1024」って、出やがった。 PS > 1kb 1024メガバイト PS > 1mb 1048576ギガバイト PS > 1gb 1073741824テラバイト(これは対応してない) PS > 1tb 数値定数 1tb が正しくありません。 発生場所 行:1 文字:3 + 1t…

アセンブリをロードするスクリプト

アセンブリをロードするスクリプトを作ってみた。 Import-Assembly.ps1 param([string[]]$assemblyName) $assemblyName += @($input) if($args[0] -eq "-?" -or $assemblyName.Length -eq 0) { $commandName = [IO.Path]::GetFileNameWithoutExtension($MyIn…

ファイルを検索して削除する

カレントディレクトリからファイルを検索して、見つかったファイルを削除するスクリプト(Find-RemoveFile.ps1) param([string[]]$patterns, [switch]$recurse, [switch]$confirm) if($args[0] -eq "-?") { $commandName = [IO.Path]::GetFileNameWithoutEx…

ファイルを検索して開く

カレントディレクトリから特定のファイルを検索して、見つかったファイルをエディタで開くコマンドが欲しかったので、作ってみた。 ############################################################################### # 関数名: # Find-OpenFile (findop) …