ラベル PowerShell の投稿を表示しています。 すべての投稿を表示
ラベル PowerShell の投稿を表示しています。 すべての投稿を表示

2011年11月17日木曜日

PowerShellのリダイレクトではまった

今日もPowerShellと戯れていたわけですが,またはまった.

Get-Content hoge -Encoding UTF8 > foo

という感じで書いていたわけですが,どうもこうすると文字コードがUnicodeにされてしまうらしく,UTF-8で保存されないらしい.そのせいでファイルフォーマットがおかしいって文句言われたよ・・・

Get-Content hoge -Encoding UTF8 | Set-Content foo -Encoding UTF8

とパイプを使ってエンコーディングを指定できる形で保存するとうまくいった.まさかリダイレクトが単純にそのままはき出すのではなく文字コード変換をかけてくるとは思いもよらなかった.

2011年11月15日火曜日

PowerShellでXMLを弄っていてはまった

PowerShellでXMLを弄っていて,ImportNodeが非破壊だと知らなくてはまった.

$A = [xml](Get-Content ファイルパスA)
$B = [xml](Get-Content ファイルパスB)

$node = $A.hoge
$B.ImportNode($node, $true)
$B.AppendChild($node) # 別ドキュメントだと文句言われる
実際には次のようにしないといけなかったらしい.
$node = $B.ImportNode($A.hoge, $true)
$B.AppendChild($node)
その辺のウェブサイトじゃなく,ドキュメントをちゃんと読んだら確かに非破壊だって書いてあるよ. 困ったらまずはドキュメント確認しないと駄目だなぁ.

2011年11月6日日曜日

PowerShellでのヘルプの見方

最近PowerShellを使うようになってきた.今までは,Windowsってバッチ作るの面倒だから嫌だわ,と思ってたけれど,PowerShell使い始めたら,もうこれ無しでは無理だわ,と思えるくらいに.

で,新しい言語に触る際にはヘルプの見方を覚えるのが重要だと思っているので,よく使うヘルプの見方というかキーワードの見つけ方をメモっておく.PowerShellではコマンドではなくコマンドレットって言うらしい.


  •  Get-Help コマンドレット
    • helpとかmanみたいなもの
  • コマンドレット | Get-Member
    • PowerShellでコマンドレットが返してくるオブジェクトがどういうメンバ変数とかメンバメソッドを持っているかを確認する.
とりあえず,ヘルプが見れて,返されるオブジェクトがどんなメンバとか持っているのかが分かれば,後は必要っぽいのがあるかどうか探してGoogleで検索すれば良いかな,とか思ってる.