Linux共有にマップされたドライブで作業する場合、ファイル名は大文字と小文字が区別されます。 PowerShellはこれを期待どおりに処理しますが、 "C"ロケールで使用されているソート順に類似した方法で出力をソートしたいと思います。これは、文字の値をU + 0000からU +希望ソートオブジェクトの動作を変更する
PS > gci Z:\foo | sort -casesensitive
xyz
Xyz
XYZ
yZ
YZ
出力:問題を説明するために
10FFFF( 'バー' と 'バー' 'foo' で前に来る前に来る 'はFoo' と 'foo' で前に例えば '0fooは' 来る)
XYZ
Xyz
YZ
xyz
yZ
現在のスレッドのカルチャ変数を[System.Globalization.CultureInfo]::InvariantCulture
に設定しようとしましたしかし、私は成功しませんでした:
$thrd = [Threading.Thread]::CurrentThread
$thrd.CurrentCulture = [Globalization.CultureInfo]::InvariantCulture
$thrd.CurrentUICulture = $thrd.CurrentCulture
私はそれが文化情報と関係があると仮定するか、私は本当に遠く離れていますか?誰が私がどこから始めなければならないか考えていますか?私は一時的に私が望む振る舞いを持つCultureInfoインスタンスを作成する必要があると推測していますが、CompareInfoが行くまではゲッターしかありませんが、CompareInfo.Compare関数をオーバーロードする方法が分かりません。 PowerShell関数を使用する必要があります。それは不可能なので、事実上失われた原因ですか?
編集
少なくとも、XYZ、エクシーズ、XYZ、YZ、YZのように、最初の文字を大文字でソートすることも可能だろうか?
「序」は、それらのコードポイント値に基づいて文字を比較.NETの比較である(また、〔にInvariantCultureと順序文字列比較の違いを参照してください(http://stackoverflow.com/a/492885/2495 ))。 [[StringComparer] :: Ordinal'](http://msdn.microsoft.com/en-us/library/system.stringcomparer)で[Mitulの答え](http://stackoverflow.com/a/18544765/2495) .ordinal.aspx)が最良の選択のように見えます。 –