or1ko's diary

日々を書きます

PowerShell

csvの2つ以上の列が同じ行を除去する方法

get-uniqueでプロパティを指定できたら良かったのですが、 できないので、一度、重複判定するための列を追加して、 sort-objectを-uniqueを呼び出して、除去する。

ConvertTo-*コマンドの動作

ConvertTo-で始まるPowerShellのコマンドはいくつかあるので、動作確認結果。 ConvertTo-Xmlはちょっとだけ期待はずれ。 最初はcsv。 > ([PSCustomObject]@{id=1;name="Jhon"},[PSCustomObject]@{id=2;name="Tom"}) | ConvertTo-Csv #TYPE System.Management…

Xmlを手軽に処理するならPowerShell

xmlのデータを集計など処理したい場合はPowerShellがおすすめ。 [xml]を使えば、解析してスクリプト上で簡単に扱えるようになる。例えば、下記のような呼び出し方。 xmlファイルのhoge.fooという値にアクセスできる。 [xml]$(Get-Content *.xml -Encoding ut…

配列のshuffle

以前、shuffleをPowerShellで実装したが冗長だっため、再び調べてみたら、すごく簡単な方法が見つかった。配列のshuffle - or1ko's diary下記のページに記載されている。 Get-Randomどうも -Count パラメータを指定すると、入力をshuffleするようだ。 PS > 1…

同時に10個までのjobを実行するように制御する方法とパイプラインについて

$ 1..100 | % { while ($(get-job -state running) -gt 10) { sleep-job 1 } start-job { # 実行したい処理を記載する } } PowerShell 3.0のworkflowのparallelが使えると思っていたのですが、 どうも並列化させたい個数は指定できないようです。 また、para…

PowerShellでいらいらすること8つ

PowerShellは非常に便利なツールなので、ついつい使い倒そうとしてしまうが、 そういって失敗し、イライラすることがよくある。それらを下記に列挙する。1. 日本語がいまいち PowerShellはShift-JISとEucがデフォルトで読めないし書けない。UTF-8にシステム…

配列のshuffle

予め用意した集団から適当に幾つかの値を取り出したい時に、配列をシャッフルしてn件取り出したくなる。 そこで、調べてみたところPowerShell及びC#の標準APIには配列をシャッフルするメソッドがないみたいだ。 じゃぁ、誰か作ってるだろうと思ってまた調べ…

2つリストのzip関数

PowerShellでHaskellのData.List.zip関数みたいなものがないかなと思っていたら、下記のページで見つけた。 function zip2($a, $b) { 0 .. ($a.count - 1) | % {, ($a[$_], $b[$_])} }PowerShell – Build a Zip Function, zipping two lists together こんな…

起動中のプロセスの引数を取得する方法

PowerShellの標準のコマンドレットには、Get-Processというものがあるが、この戻り値から取得できるプロセスのオブジェクトをたどっても、実行の際に渡された引数を取得できないみたいだ。StartInfoメンバがそれっぽいのだけれども、 下記のコマンドを試して…

Reduce系コマンド

以前、Reduceっぽいコマンドとして、ForEach-Objectコマンドをあげたが、PowerShellを日頃使っていくなかで、他にもいくつかみつけた。 Measure-Object : 合計とか求めるコマンド 以下みたいに使う。Count以外は指定しないと計算しない。 PS C:\> 1..10 | Me…

get-content hoge.txt | をリダイレクトの変わりに使うのは注意

PowerShellを使っているときに、 プログラムにテキストを標準入力で与えるため、 下記のようなコマンドを実行した。 get-content input.txt | python test.py そしたら、異常にメモリを食いだし、 パソコンが遅くなったので、 しかたなく、プロセスを終了さ…

Unixのwhich

PowerShellでUnixのwhichに相当する機能は、Get-Commandだった。環境変数Pathに設定してあるだけなのに、Get-Commandで取れることにはびっくりした。今まで、"start"とかはMS-DOSと同じようにただ実行されているだけなのかと思っていたけれど、一度、Command…

WASP : コマンドでGUIを操る

iPadを買ってから、2chを見始めようになって、さらにダメ人間へと一歩踏み出したわけだが、 (iPad、2chをみるのにこれほど適したものはない。2tchに感謝) PowerShellのスレを見てたら、WASPというものの存在をしった。 Windows Automation Snapin for Power…

profileの作成方法

ref:Where is profile located in Windows 7 powershell? - Vista Forums 上のページから、抜粋。 > new-item -itemtype file -path $profile -force -forceが怖かったので、引数除いてつくった。

モナド

モナドか、 いつか、あの力の秘密、 解き明かしてみたいな。

CmdLetを分類2の2(動詞)

とりあえず、この二つで分類終了。 PS C:\Users\ori> Get-Command -CommandType Cmdlet | Group-Object Verb | Sort-Object Count -Descending | % { $_.Group | % -Begin {$s=""} { $s += "| " + $_.Name + " | " + (get-help $_).Synopsis + "|`n" } { "-"…

CmdLetを分類2の1(名詞)

前回も思ったけど今回はさらにスパムっぽいな...。前回のCmdLetを名詞で分類したものをさらに、見やすくしようとはてなで表で表示するにした。動詞で分類するのは、次のエントリー。下記で生成した文字列を、貼付け。 PS C:\Users\ori> Get-Command -Command…

Cmdletを分類1

CmdLetを、Nounプロパティで分類してみた。 PS C:\Users\mono> Get-Command -CommandType Cmdlet | Group-Object Noun | Sort-Object Count -Descending Count Name Group ----- ---- ----- 9 Object {Compare-Object, ForEach-Object, Group-Object, Measur…

インストールされているHotFix一覧を表示する

PowerShellのコマンドレットを眺めてたら、 Get-HotFixなるコマンドを発見。以前、Get-WmiObject うんたらかんたらとして、 Hotfix一覧を取り出したのに...。PowerShellのコマンドレットは、全体的にリモート コンピュータに適用することが考えられているよ…

PowerShellでのMap、Filter、Reduce

便利なことに、短い文字がエイリアスで割り当てられてる Mapは%。%自体はForEach-Objectの別名。 例 > # カレントフォルダ以下のファイル名一覧 > Get-ChildItem -Recurse | % { $_.FullName } Filterは?。?も同じくWhere-Objectの別名 例 > # カレントフォ…

MS-Dosのtreeっぽいコマンド

Get-ChildItem -Recurese -Name 再帰的にファイル一覧を出したくて、すぐにtreeコマンドを思い浮かべたのだけれど、 treeコマンドはそういうものじゃなかった。cygwinとかも入ってなかったので、pythonのプログラムでも作ろうかと思ったのだけど、 ふと、Pow…