AADのユーザー一覧をCSVに出力

AADのユーザー一覧をCSVに出力…。 いや、もうこの手のユーザー一覧を出力するスクリプトって何回書いたかもう覚えていないほど何度も何度も書いてます。でも、また今日も書いちゃいました…。 でも、Azure Active Directoryからユーザー情報を抽出してCSVに出力するのは、PowerShellだとすごく簡単に書けますね。別に書いておく必要も感じないくらいに簡単です。VBScriptでゴリゴリ書いていた時代が懐かしいです。 - https://github.com/ebibibi/AzureManagement/blob/master/AAD/ExportAllAADUsersToCSV.ps1

September 3, 2018 · 1 min · 胡田昌彦

「Excelで開くとCSVファイルが文字化けしている」場合の回避方法

皆さんこんにちは胡田です。 CSVファイルを開くと日本語が文字化けしてしまっていること、よくありますよね。会社で質問をもらったのですが、あまりにもよくあるケースで困っている人も多いと思いますのでブログに書いておきたいと思います。何度かMicrosoftさんにも報告させてもらっている気がするのですが、なかなか難しいところです。 いくつかパターンがあると思いますが今回対象にするのは下記のケースです。 - ファイルの拡張子は.csv - 文字コードはUTF-8 UTF-8の文字コードで日本語が含まれているケースは非常に多いと思います。というか当たり前にこういう選択肢になると思うのですがこのファイルを単純にダブルクリックからExcelで開くと文字化けします…。BOMあり/無し等で挙動の違いはあるかもしれませんが、今回は文字化けするケースのお話です。 対処方法1 文字コードをSJISに変換してから開く ExcelはSJISが大好きです。CSVファイル自体をSJISに変換してしまいましょう。 ツールはどれを使ってもいいのですが、今だと個人的には専用ツールを使うよりもVisual Studio Codeをおすすめします。 これで文字コードがSJISになってます。 このファイルを普通にExcelで開けばきちんと日本語が文字化けしない状態で開くことができます。 対処方法2 Excel上で文字コードを指定して読み込む Excel上で読み込む時に対処することもできます。 まずExcelのみを立ち上げます。 文字化けしている様子も確認できますね。文字コードを正しく指定します。 ……すいません、サンプルファイルが仕事関連のものできちんと文字化けが直ったスクリーンショットをお見せすることができませんでした。ですが「(株)」と日本語がきちんと文字化けせずに表示できていることが見えると思います。 あとは「読み込み」ボタンを押せば大丈夫です。 今回はCSVファイルを文字化けせずにExcelに読み込ませる方法を2つ紹介しました。でも、毎回対応する必要があるのが難点です…。 結局Excelが文字コードの自動判別をうまくしてくれないことが原因であり技術的には簡単に解決可能であるはずだと思っています。ですが、この挙動は何年たっても変わりません…。 私はもう自分で慣れちゃってるので何も意識せずに文字コードをコントロールしちゃうのであまり気にすらしていなかったのですが、改めてMicrosoftさんにもフィードバックして改善をお願いしたいと思いました。やります…。 もしも私がしらないだけでもっと簡単に都度対応ではなく対応できるワークアラウンドを知っている方がいたらコメント、チャット等で教えていただければと思います。 (追記)対処方法3 メモ帳で一度開いて上書きする(BOM付きにする) Twitterにて@hdk_2さんに以下教えてもらいました。 確か BOM ありだと大丈夫ですよね。メモ帳で保存し直すだけでも。 — Hideki EIRAKU (@hdk_2) 2018年8月27日 https://platform.twitter.com/widgets.js 教えてもらったとおり単にメモ帳でファイルを開いて何も編集せず「上書き保存」するだけで文字化けを回避できることを確認しました。なるほど!簡単ですね! 確認するとメモ帳で保存すると必ずBOM付きで保存してくれるようです。そして、BOM付きであればきちんとExcelも文字化けせずにUTF-8のファイルの日本語を取り扱ってくれました。 メモ帳だと容量の大きなファイルを開くとかなり時間がかかったりメモリ消費が大きかったり、そもそも開けないケースもありますが、容量が相対的に小さいファイルであればこれが一番お手軽かもしれないですね。 @hdk_2さんありがとうございます! 他にも方法ありましたら教えてくださいませ! マイクロソフトさんに対処してもらおう!(投票のお願い) https://excel.uservoice.com/forums/304921-excel-for-windows-desktop-application/suggestions/14154036-automatically-recognize-unicode-csv-file-automatic この問題への対処を求める要望がすでに何年も前からUserVoiceに上がっています。投票が多くなれば対処される可能性も高くなりますので、この問題に遭遇してこのブログにたどり着いた方は是非上記リンクより投票(Vote)お願いします!

August 27, 2018 · 1 min · 胡田昌彦

PowerShellを使ってExcelできちんと開けるCSVファイルを作成する方法

PowerShellからCSVファイルを作成し、それをExcelで開いて…という操作は結構需要があり、頻繁に行われるのではないかと思います。ちょっとしたはまりポイントがありますので、そのあたりのTipsを紹介しようと思います。 Export-Csv PowerShellの素敵な点の1つはオブジェクトを簡単にCSVに出力できるコマンドレットが標準で用意されているところだと思います。 ただし、日本語が含まれている場合に、そのまま何も考えずにExport-Csvを実行すると文字化けが発生してしまいます。 これは、Excelで読み込むときにエンコーディングの判定に失敗して文字化けしている…という事ではなく、PowerShellでファイルを吐き出した時に????に変換されてしまっています。なので、出力時にきちんとエンコーディングを指定してあげる必要があります。 どのエンコーディングを使うか、というのは人によって意見が違うかもしれませんが、私はいつもUTF-8を使います。これであればきちんと日本語も出力され、Excelで開いた時にも文字化けもなく意図した通りに開きます。 ExcelでShift-JIS以外の文字コードでは文字化けが発生する問題 実は先ほどの例ではうまくいっていますが、ExcelはCSVファイルはShift-JISにしておかないと文字化けすることが多い困ったやつです。回避策はいくつかあります。以下のあたりが参考になります。 ExcelでUTF-8のCSVを開く方法 (CodeZine編集部ブログ) ExcelでUTF-8エンコーディングされたCSVファイルを開く方法 - 大人になったら肺呼吸 先ほどの例ではBOM付きのUTF-8であったためうまく表示されたわけです。Stirlingでファイルを確認するとファイルの先頭に「EFBBBF」が不可されていることがわかります。 スクリプト内でファイルに出力する場合 Export-Csvを使う場合には-Encodingオプションを付ければよいことはわかりましたが、foreachの中などで、自分で文字列をファイルに出力したいようなときには残念ながら別の問題が発生します。 このようにA列にすべて表示されてしまいます。(※文字化けをしていないのはExcel2010だからなのではないかと思います。) これも回避策としてはいくつかあると思いますがShift-JISで出力するにはAdd-Contentコマンドレットで-EncodingにStringを指定することができます。 UTF-8でBOM付きにしようと思ったら、先にファイルを作成しておくと良いようです。

October 2, 2012 · 1 min · 胡田昌彦